如何为Firebase Functions模拟器配置多端口调试多个代码库?
解决Firebase模拟器多代码库Functions调试端口冲突问题
同一模拟器实例下配置多调试端口
你可以通过修改firebase.json,为每个代码库的Functions单独指定调试端口,这样同一模拟器实例就能同时调试多个代码库:
- 在
firebase.json的functions数组中,给每个代码库添加inspectPort字段,指定唯一端口:
{ "functions": [ { "source": "functions-lib-1", "codebase": "lib1", "inspectPort": 9229 }, { "source": "functions-lib-2", "codebase": "lib2", "inspectPort": 9230 } ], "emulators": { "functions": { "port": 5001 } } }
- 启动模拟器时依然使用原命令:
firebase emulators:start --inspect-functions
此时两个代码库的Functions会分别监听9229和9230端口,不会互相干扰。
- 在VS Code的
.vscode/launch.json中添加两个调试配置,分别对应不同端口:
{ "version": "0.2.0", "configurations": [ { "name": "Debug Lib1 Functions", "type": "node", "request": "attach", "port": 9229, "address": "localhost", "skipFiles": ["<node_internals>/**"], "localRoot": "${workspaceFolder}/functions-lib-1", "remoteRoot": "/workspace" }, { "name": "Debug Lib2 Functions", "type": "node", "request": "attach", "port": 9230, "address": "localhost", "skipFiles": ["<node_internals>/**"], "localRoot": "${workspaceFolder}/functions-lib-2", "remoteRoot": "/workspace" } ] }
启动多个独立模拟器实例
如果需要完全隔离两个代码库的运行环境,可以启动多个模拟器实例,分别指定调试端口和独立的服务端口:
- 启动第一个代码库的模拟器(默认端口):
firebase emulators:start --inspect-functions --project my-project-1
- 启动第二个代码库的模拟器,指定调试端口为9230,同时修改所有服务端口避免冲突:
firebase emulators:start --inspect-functions=9230 --project my-project-2 --functions-port 5002 --firestore-port 8081 --auth-port 9099
注意:要确保所有模拟器服务(functions、firestore等)的端口都不与第一个实例重复。
- 同样在VS Code的
launch.json中配置对应端口的调试项,分别附加到两个模拟器实例即可。
内容的提问来源于stack exchange,提问作者Supersharp
相关产品推荐
相关产品推荐

