TL; DR
-
正确设置运行时可执行文件?
-
正确通过Heroku arguments?
-
运行Heroku Node.js app?
-
Debug Heroku Node.js app?
详情
我创建了一个Heroku Node.js应用程序,它使用CLI命令启动:
heroku local web
并成功从5000端口开始 .
我正在尝试使用Microsoft Visual Studio Code调试它,使用以下launch.json配置:
{
"name": "Launch",
"type": "node",
"request": "launch",
"program": "${workspaceRoot}/app.js",
"stopOnEntry": false,
"args": [],
"cwd": "${workspaceRoot}",
"preLaunchTask": null,
"runtimeExecutable": "/usr/local/bin/heroku",
"runtimeArgs": [
"local web",
],
"env": {
"NODE_ENV": "development"
},
"console": "internalConsole",
"sourceMaps": false,
"outFiles": []
}
但VSCode自动将 --debug-brk
参数传递给heroku,导致错误:
/usr/local/bin/heroku --debug-brk=23080 'local web' app.js
! `--debug-brk=23080` is not a heroku command.
! See `heroku help` for a list of available commands.
VSCode也没有找到没有完整路径的heroku命令(似乎它没有加载 PATH
环境变量) .
有关如何设置编辑器的任何想法?
3 回答
以下解决方案适合我:
1)在procfile中,将参数--debug添加到节点进程
默认情况下,调试器侦听端口5858
2)运行节点进程后,打开VSCode并将以下配置添加到launch.json文件中
3)最后,单击VSCode中的播放按钮,选择“附加到进程”,它应该调试您的进程 .
由于某些原因,我提出的解决方案对我不起作用,因此我很挣扎 . 但是,另一种解决方案确实如此,我想我会分享 .
从VS Code的默认调试选项中选择
Attach by Process ID
当您使用此配置启动调试器时,它应列出要附加到的可用进程,其中一个应该只是server.js . 这需要每次手动附加,如果其他自动附件适合您,可能会更好,但这仍然是一个可行的解决方案 .
以下解决方案对我有用 . 在我的package.json“脚本”中,我补充说:
然后,在launch.json中我添加了一个envFile条目到默认的"Launch via NPM"配置,现在看起来像这样:
上述解决方案使VSCode调试器能够通过npm脚本运行我的服务器,并且我的服务器使用我的.gitignore'd .env文件中设置的env vars运行,就像在"regular" Heroku node.js workflow中一样 .