2017-07-24 92 views
2

我將VS代碼更新爲1.14.2,並試圖運行需要節點6.x的應用程序。此更新前,我用的是配置工作就好了:在VS代碼調試器中使用舊版本的節點

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "type": "node", 
      "request": "launch", 
      "name": "Launch Program", 
      "program": "${workspaceRoot}/keystone.js" 
     }, 
     { 
      "type": "node", 
      "request": "attach", 
      "name": "Attach to Port", 
      "address": "localhost", 
      "port": 5858 
     } 
    ] 
} 

現在,當我執行程序時,它只是掛起,而無需啓動(預計當我與節點7.x或更高版本上運行)。此外,它還提供以下消息,我不確定是否相關:

使用檢查器協議進行調試是因爲檢測到Node.js v8.2.1。

節點--inspect = 38743 --debug-BRK keystone.js

調試器監聽WS://127.0.0.1:38743/d4a20480-3a0f-4aa7-8882-aec756edd6da 調試器連接。

我使用NVM來管理我的節點版本,並nvm list提供以下的(你可以看到,我已經有6.11.0別名爲默認):

$ nvm list 
->  v6.11.0 
     v8.0.0 
     system 
default -> 6.11.0 (-> v6.11.0) 
node -> stable (-> v8.0.0) (default) 
stable -> 8.0 (-> v8.0.0) (default) 
iojs -> N/A (default) 
lts/* -> lts/boron (-> N/A) 
lts/argon -> v4.8.4 (-> N/A) 
lts/boron -> v6.11.1 (-> N/A) 

我假設它是由於嘗試使用錯誤的Node版本而沒有執行,並且任何幫助解決這個問題都將不勝感激。

回答

0

不知道哪個版本的VS代碼引入了此選項(我使用的是版本1.17.2),但在launch.json中,我們可以明確指定要使用哪種調試協議。

因此,迫使VS代碼使用legacy協議,添加"protocol": "legacy"

這是你的launch.json更新,包括關鍵:

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "type": "node", 
      "request": "launch", 
      "name": "Launch Program", 
      "program": "${workspaceRoot}/keystone.js" 
     }, 
     { 
      "type": "node", 
      "request": "attach", 
      "name": "Attach to Port", 
      "address": "localhost", 
      "port": 5858, 
      "protocol": "legacy" 
     } 
    ] 
} 
相關問題