2016-01-17 70 views
17

我之前使用gulp和運行gulp來啓動我的應用程序和來自Visual Studio Code debugger的偵聽器,但最近需要切換到運行腳本npm來代替。不幸的是我沒有能夠VSCode能夠通過調試器運行npm腳本,所以我不得不訴諸節點直接啓動我的服務器,它擺脫了我自動重載代碼的監聽器任務。如何使用來自VSCode的npm運行腳本進行調試?

這似乎是應該是簡單的東西,但到目前爲止我沒有太多的運氣。下面是我嘗試使用的launch.json文件的代碼片段,但無法找到npm。

{ 
    ... 
     "program": "npm", 
     "args": [ 
      "run", 
      "debug" 
     ], 
    ... 
} 

這給了我以下錯誤。

錯誤的請求 '啓動':程序C:\ MyProject的\ NPM「不存在

相關資源:

回答

-1

NPM腳本和一飲而盡並不是真的意味着啓動你的應用程序,而是運行諸如編譯等任務。如果它是一個節點應用程序,我會建議你以沒有npm的方式配置你的launch.json。如果您有像PM2這樣複雜的監聽器或流程管理器,請改用流程管理器手動啓動您的應用程序,然後使用附件配置。

對於npm 任務,您可以指定一個與"command": "npm""args": ["run"]的tasks.json。

+0

我沒有運氣與附加選項,但我也沒有嘗試過很難假設我會遇到類似的問題。當節點沒有直接運行時,你可以指出如何連接節點的任何文檔 - 比如通過gulp,webpack或npm,或者同時全部三個節點:( - 會很有幫助。 – jpierson

+6

順便說一句,我看到新興的是讓'npm start'成爲啓動節點應用程序的標準方式。 – jpierson

+1

gulp本身就是一個NodeJS腳本,你可以將「program」指向「./node_modules/gulp/bin/gulp.js」(安裝gulp as devDependency)並在args數組中設置任務名稱 – felixfbecker

13
  1. 配置在.vscode/launch.json一個新的調試目標:

    { 
        "name": "Attach To npm", 
        "type": "node", 
        "request": "attach", 
        "port": 5858, 
        "address": "localhost", 
        "restart": false, 
        "sourceMaps": false, 
        "outDir": null, 
        "localRoot": "${workspaceRoot}", 
        "remoteRoot": null 
    } 
    
  2. 配置您的NPM運行與--debug-BRK選項節點:

    "scripts": { 
        "start": "node app.js", 
        "debug": "node --debug-brk app.js" 
        ... 
    
  3. 從外殼啓動您的應用程序:

    $npm run debug 
    
  4. 默認情況下,程序將在端口5858上等待連接調試器

  5. 因此,在您的visual studio代碼(「Attach To npm」)中運行調試器。

  6. 享受你調試:)

+0

現在節點標誌是--inspect-brk,默認端口是9229,至少在我的機器上。 – kaba

12

看來,VS代碼將支持release from October 2016 NPM腳本和其他發射場景。

下面是一個例子,因爲它是proposed on GitHub

包。JSON

"scripts": { 
    "debug": "node --nolazy --debug-brk=5858 myProgram.js" 
    }, 

vscode推出配置

{ 
    "name": "Launch via NPM", 
    "type": "node", 
    "request": "launch", 
    "cwd": "${workspaceRoot}", 
    "runtimeExecutable": "npm", 
    "runtimeArgs": [ 
     "run-script", "debug" 
    ], 
    "port": 5858 
} 
+4

我得到「無法啓動調試目標(spawn npm ENOENT)」。對於上述VSCode 1.7.2 – andreister

+9

@andreister在Windows上,我通過使用「npm.cmd」而不是簡單的「npm」來實現它! – electrotype

+1

我想知道你有腳本的情況,比如:「grunt test」。然後怎樣呢?如果你不手動啓動節點。 – jpierson

0

我試圖通過GutiMac和Jpierson給出的解決方案,但由於某些原因,我無法使調試工作,任何這些。

對我來說工作正常(Ubuntu 16,節點8.9.1,VS 1.8.1)的替代解決方案是使用這個簡單的應用程序啓動器(要添加到VS launch.json的配置數組中):

{ 
    "type": "node", 
    "request": "launch", 
    "name": "Launch Node App", 
    "program": "${workspaceFolder}/my-app/my-npm-start-script-dir/index.js" 
}