如何在VS Code中为本地Firebase Functions附加调试器?
给本地Firebase Functions附加调试器的方法
当然没问题!给本地运行的Firebase Functions挂上调试器完全可行,我来给你捋清楚具体怎么做:
第一步:开启模拟器的调试监听
首先你需要修改启动模拟器的命令,加上调试端口的参数,这样Functions会在指定端口等待调试器连接。把原来的命令改成:firebase serve --only functions,hosting --inspect-functions
默认情况下,这个参数会让Functions在9229端口监听调试请求,正好和你现有配置里的端口对应。运行这个命令后,控制台会输出类似「Debugger listening on ws://localhost:9229/xxxxxx」的日志,说明调试端口已经准备好啦。
第二步:完善launch.json配置
你现有的配置片段已经有了核心部分,只需要补充几个实用的字段,让调试体验更顺畅。在VS Code的.vscode/launch.json文件里,把配置改成这样:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "attach", "name": "Attach to Firebase Functions", "port": 9229, "skipFiles": [ "<node_internals>/**", "${workspaceFolder}/functions/node_modules/**" ], "localRoot": "${workspaceFolder}/functions", "remoteRoot": "${workspaceFolder}/functions" } ] }
我来解释下补充的字段:
- name:改成更清晰的名字,方便你在调试面板里快速识别
- skipFiles:跳过Node.js内部模块和
node_modules里的代码,避免调试时不小心跳进第三方库的源码里,专注于你自己写的函数逻辑 - localRoot & remoteRoot:指定你的Functions代码所在的目录,确保调试器能正确把运行中的代码和本地源码对应起来,不会出现断点不生效的情况
第三步:开始调试
按照下面的步骤操作就能顺利调试了:
- 运行修改后的模拟器命令,等控制台出现调试监听的日志
- 在VS Code里给你的
helloWorld函数打上断点(点击代码行号左边的空白处就行) - 打开VS Code的调试面板(快捷键
Ctrl+Shift+D),选择「Attach to Firebase Functions」,点击启动按钮 - 访问你的示例URL:
http://localhost:5001/foo-project/us-central1/helloWorld,这时候代码就会在你设置的断点处停下来,你可以进行单步执行、查看变量、调用栈等调试操作啦
一些注意事项
- 如果9229端口被其他程序占用了,你可以换个端口,比如9230:命令改成
firebase serve --only functions,hosting --inspect-functions=9230,同时把launch.json里的port字段改成9230就行 - 每次修改Functions代码后,模拟器会自动重启,这时候调试器会断开,你只需要重新点击调试面板的启动按钮,再次附加就行
- 确保你的本地Node.js版本和Firebase Functions要求的版本一致(可以看
functions/package.json里的engines字段),避免出现调试不兼容的问题
内容的提问来源于stack exchange,提问作者Teoman shipahi
相关产品推荐
相关产品推荐

