[{"data":1,"prerenderedAt":407},["ShallowReactive",2],{"article-firebase-emulator-port-token":3},{"id":4,"title":5,"body":6,"category":392,"createdAt":394,"description":395,"extension":396,"index":397,"meta":398,"navigation":399,"path":400,"publish":399,"seo":401,"series":397,"seriesTitle":397,"stem":402,"tag":403,"thumbnail":397,"updatedAt":397,"__hash__":406},"articles\u002Farticles\u002Ffirebase-emulator-port-token.md","ポートが使用されていてFirebaseエミュレータが起動できない時の対処法",{"type":7,"value":8,"toc":390},"minimark",[9,13,24,27,33,40,46,260,263,266,281,284,357,360,374,377,383,386],[10,11,12],"p",{},"こんにちはjunです、最近Firebaseを使用したアプリケーション開発をしています。エミュレータがあるのでそこでFirestoreやAuthenticationのテストをしています。ある日、開発の続きをやろうとしてエミュレータを起動させました。",[14,15,20],"pre",{"className":16,"code":18,"language":19},[17],"language-text","firebase emulators:start\n","text",[21,22,18],"code",{"__ignoreMap":23},"",[10,25,26],{},"しかし",[14,28,31],{"className":29,"code":30,"language":19},[17],"⚠  firestore: Port 8081 is not open on localhost, could not start Firestore Emulator.\n⚠  firestore: To select a different host\u002Fport, specify that host\u002Fport in a firebase.json config file:\n      {\n        \u002F\u002F ...\n        \"emulators\": {\n          \"firestore\": {\n            \"host\": \"HOST\",\n            \"port\": \"PORT\"\n          }\n        }\n      }\ni  emulators: Shutting down emulators.\n\nError: Could not start Firestore Emulator, port taken.\n",[21,32,30],{"__ignoreMap":23},[10,34,35,36,39],{},"あらら、、起動に失敗してしまいました。エミュレーター二回目の起動の時によく発生します。原因は",[21,37,38],{},"Could not start Firestore Emulator, port taken.","とある様にポートが使用中だからです。",[10,41,42,45],{},[21,43,44],{},"firebase.json","にはエミュレーターのポートを定義できます。私の場合は以下の通りです。",[14,47,51],{"className":48,"code":49,"language":50,"meta":23,"style":23},"language-json shiki shiki-themes material-theme-ocean","\"emulators\": {\n    \"auth\": {\n        \"port\": 9099\n    },\n    \"functions\": {\n        \"port\": 5001\n    },\n    \"firestore\": {\n        \"port\": 8081\n    },\n    \"database\": {\n        \"port\": 8082\n    },\n    \"ui\": {\n        \"enabled\": true\n    }\n},\n","json",[21,52,53,75,93,111,117,131,145,150,164,178,183,197,211,216,230,245,251],{"__ignoreMap":23},[54,55,58,62,66,68,72],"span",{"class":56,"line":57},"line",1,[54,59,61],{"class":60},"sAklC","\"",[54,63,65],{"class":64},"sfyAc","emulators",[54,67,61],{"class":60},[54,69,71],{"class":70},"s0W1g",": ",[54,73,74],{"class":60},"{\n",[54,76,78,81,85,87,90],{"class":56,"line":77},2,[54,79,80],{"class":60},"    \"",[54,82,84],{"class":83},"sJ14y","auth",[54,86,61],{"class":60},[54,88,89],{"class":60},":",[54,91,92],{"class":60}," {\n",[54,94,96,99,103,105,107],{"class":56,"line":95},3,[54,97,98],{"class":60},"        \"",[54,100,102],{"class":101},"s5Dmg","port",[54,104,61],{"class":60},[54,106,89],{"class":60},[54,108,110],{"class":109},"sx098"," 9099\n",[54,112,114],{"class":56,"line":113},4,[54,115,116],{"class":60},"    },\n",[54,118,120,122,125,127,129],{"class":56,"line":119},5,[54,121,80],{"class":60},[54,123,124],{"class":83},"functions",[54,126,61],{"class":60},[54,128,89],{"class":60},[54,130,92],{"class":60},[54,132,134,136,138,140,142],{"class":56,"line":133},6,[54,135,98],{"class":60},[54,137,102],{"class":101},[54,139,61],{"class":60},[54,141,89],{"class":60},[54,143,144],{"class":109}," 5001\n",[54,146,148],{"class":56,"line":147},7,[54,149,116],{"class":60},[54,151,153,155,158,160,162],{"class":56,"line":152},8,[54,154,80],{"class":60},[54,156,157],{"class":83},"firestore",[54,159,61],{"class":60},[54,161,89],{"class":60},[54,163,92],{"class":60},[54,165,167,169,171,173,175],{"class":56,"line":166},9,[54,168,98],{"class":60},[54,170,102],{"class":101},[54,172,61],{"class":60},[54,174,89],{"class":60},[54,176,177],{"class":109}," 8081\n",[54,179,181],{"class":56,"line":180},10,[54,182,116],{"class":60},[54,184,186,188,191,193,195],{"class":56,"line":185},11,[54,187,80],{"class":60},[54,189,190],{"class":83},"database",[54,192,61],{"class":60},[54,194,89],{"class":60},[54,196,92],{"class":60},[54,198,200,202,204,206,208],{"class":56,"line":199},12,[54,201,98],{"class":60},[54,203,102],{"class":101},[54,205,61],{"class":60},[54,207,89],{"class":60},[54,209,210],{"class":109}," 8082\n",[54,212,214],{"class":56,"line":213},13,[54,215,116],{"class":60},[54,217,219,221,224,226,228],{"class":56,"line":218},14,[54,220,80],{"class":60},[54,222,223],{"class":83},"ui",[54,225,61],{"class":60},[54,227,89],{"class":60},[54,229,92],{"class":60},[54,231,233,235,238,240,242],{"class":56,"line":232},15,[54,234,98],{"class":60},[54,236,237],{"class":101},"enabled",[54,239,61],{"class":60},[54,241,89],{"class":60},[54,243,244],{"class":60}," true\n",[54,246,248],{"class":56,"line":247},16,[54,249,250],{"class":60},"    }\n",[54,252,254,257],{"class":56,"line":253},17,[54,255,256],{"class":60},"}",[54,258,259],{"class":70},",\n",[10,261,262],{},"とりあえず8081と8082でどんなプロセスが動いているか確かめましょう。（この時はfirestoreだけでなくdatabaseも取られていました。）",[10,264,265],{},"Macで任意ポートで使用されているプロセスを調べる時は以下の様なコマンドを打ちます。",[14,267,271],{"className":268,"code":269,"language":270,"meta":23,"style":23},"language-bash shiki shiki-themes material-theme-ocean","lsof -i:PORT\n","bash",[21,272,273],{"__ignoreMap":23},[54,274,275,278],{"class":56,"line":57},[54,276,277],{"class":101},"lsof",[54,279,280],{"class":64}," -i:PORT\n",[10,282,283],{},"なので今回は",[14,285,287],{"className":268,"code":286,"language":270,"meta":23,"style":23},"lsof -i:8081\nOMMAND  PID       USER   FD   TYPE            DEVICE SIZE\u002FOFF NODE NAME\njava    2322       jun   93u  IPv6 0x3f5922436f29fd5      0t0  TCP localhost:sunproxyadmin (LISTEN)\n",[21,288,289,296,325],{"__ignoreMap":23},[54,290,291,293],{"class":56,"line":57},[54,292,277],{"class":101},[54,294,295],{"class":64}," -i:8081\n",[54,297,298,301,304,307,310,313,316,319,322],{"class":56,"line":77},[54,299,300],{"class":101},"OMMAND",[54,302,303],{"class":64},"  PID",[54,305,306],{"class":64},"       USER",[54,308,309],{"class":64},"   FD",[54,311,312],{"class":64},"   TYPE",[54,314,315],{"class":64},"            DEVICE",[54,317,318],{"class":64}," SIZE\u002FOFF",[54,320,321],{"class":64}," NODE",[54,323,324],{"class":64}," NAME\n",[54,326,327,330,333,336,339,342,345,348,351,354],{"class":56,"line":95},[54,328,329],{"class":101},"java",[54,331,332],{"class":109},"    2322",[54,334,335],{"class":64},"       jun",[54,337,338],{"class":64},"   93u",[54,340,341],{"class":64},"  IPv6",[54,343,344],{"class":109}," 0x3f5922436f29fd5",[54,346,347],{"class":64},"      0t0",[54,349,350],{"class":64},"  TCP",[54,352,353],{"class":64}," localhost:sunproxyadmin",[54,355,356],{"class":70}," (LISTEN)\n",[10,358,359],{},"なんだろう？とりえずエミュレーター系だと思う。なのでこのプロセスをkillする",[14,361,363],{"className":268,"code":362,"language":270,"meta":23,"style":23},"kill 2322\n",[21,364,365],{"__ignoreMap":23},[54,366,367,371],{"class":56,"line":57},[54,368,370],{"class":369},"sdLwU","kill",[54,372,373],{"class":109}," 2322\n",[10,375,376],{},"そしてもう一度起動",[14,378,381],{"className":379,"code":380,"language":19},[17],"firebase emulators:start\n┌─────────────────────────────────────────────────────────────┐\n│ ✔  All emulators ready! It is now safe to connect your app. │\n│ i  View Emulator UI at http:\u002F\u002Flocalhost:4002                │\n└─────────────────────────────────────────────────────────────┘\n",[21,382,380],{"__ignoreMap":23},[10,384,385],{},"OK!これで起動完了。以上がFirestore、Databaseでポートが取られて起動できない時の対処法です。Authとかは起きないのに、なぜかfirestoreとDatabaseだけ発生します。。",[387,388,389],"style",{},"html pre.shiki code .sAklC, html code.shiki .sAklC{--shiki-default:#89DDFF}html pre.shiki code .sfyAc, html code.shiki .sfyAc{--shiki-default:#C3E88D}html pre.shiki code .s0W1g, html code.shiki .s0W1g{--shiki-default:#BABED8}html pre.shiki code .sJ14y, html code.shiki .sJ14y{--shiki-default:#C792EA}html pre.shiki code .s5Dmg, html code.shiki .s5Dmg{--shiki-default:#FFCB6B}html pre.shiki code .sx098, html code.shiki .sx098{--shiki-default:#F78C6C}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sdLwU, html code.shiki .sdLwU{--shiki-default:#82AAFF}",{"title":23,"searchDepth":95,"depth":95,"links":391},[],[393],"ministack","2021-05-31","ポートが使用されていてFirebaseエミュレータが起動的無い時の対処法","md",null,{},true,"\u002Farticles\u002Ffirebase-emulator-port-token",{"title":5,"description":395},"articles\u002Ffirebase-emulator-port-token",[404,405],"infrastructure","firebase","WZCWojY2PQc1aA0-QDiGPzMKO6InsuB6Hbr1wZtO8aI",1780987148549]