簡體   English   中英

我可以使用VSCode在本地運行/調試Heroku Node.js應用程序嗎?

[英]Can I run/debug Heroku Node.js app locally with VSCode?


TL; DR

Microsoft VSCode v1.6.1上 ,如何:

  1. 正確設置運行時可執行文件?
  2. 正確傳遞Heroku參數
  3. 運行Heroku Node.js應用程序?
  4. 調試Heroku Node.js應用程序?

細節

我創建了一個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環境變量)。

有關如何設置編輯器的任何想法?

以下解決方案適合我:

1)在procfile中,將參數--debug添加到節點進程

web: node --debug server.js

默認情況下,調試器偵聽端口5858

2)運行節點進程后,打開VSCode並將以下配置添加到launch.json文件中

{
 "type": "node",
 "request": "attach",
 "name": "Attach to Process",
 "port": 5858
}

3)最后,單擊VSCode中的播放按鈕,選擇“附加到進程”,它應該調試您的進程。

以下解決方案對我有用。 在我的package.json“腳本”中,我補充說:

 "debug": "node --inspect-brk server.js"

然后,在launch.json中,我將一個envFile條目添加到默認的“通過NPM啟動”配置,現在看起來像這樣:

 {
        "type": "node",
        "request": "launch",
        "name": "Launch via NPM",
        "runtimeExecutable": "npm",
        "runtimeArgs": [
            "run-script",
            "debug"
        ],
        "port": 9229,
        "envFile": "${workspaceFolder}/.env"
}

上述解決方案使VSCode調試器能夠通過npm腳本運行我的服務器,並且我的服務器使用我的.gitignore'd .env文件中設置的env vars運行,就像在“常規” Heroku node.js工作流中一樣

由於某些原因,我提出的解決方案對我不起作用,因此我一直在努力。 但是,另一種解決方案確實如此,我想我會分享。

從VS Code中的默認調試選項中選擇Attach by Process ID

當您使用此配置啟動調試器時,它應列出要附加到的可用進程,其中一個應該只是server.js。 這需要每次手動附加,如果其他自動附件適合您,可能會更好,但這仍然是一個可行的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM