2017-04-17 134 views
0

我正在嘗試將我的默認grunt任務附加到vscode調試器。所以我期望的工作流程是啓動調試器,它運行默認的grunt任務,然後我可以使用vscode調試器在我的代碼中放置斷點。我啓動的JSON文件看起來像這樣。將grunt附加到VSCODE調試器

{ 
    "version": "0.2.0", 
    "configurations": [ 
     { 
      "type": "node", 
      "request": "launch", 
      "name": "Launch Program", 
      "program": "${workspaceRoot}/node_modules/grunt/lib/grunt", 
      "args": ["run"], 
      "cwd": "${workspaceRoot}", 
      "preLaunchTask": null, 
      "runtimeExecutable": null, 
      "runtimeArgs": [ 
      "--nolazy" 
      ], 
      "env": { 
       "NODE_ENV": "production" 
      } 
     }, 
     { 
      "type": "node", 
      "request": "attach", 
      "name": "Attach to Process", 
      "port": 5858 
     } 
    ] 
} 

但我得到一個錯誤,無法啓動程序 'node_modules /咕嚕/ lib目錄/咕嚕';設置'outfiles'屬性可能有幫助

+1

你的咕嚕任務是做什麼的?它只是運行應用程序還是有編譯步驟?如果它是第一個,那麼對於任務跑步者已經有很多類似的問題,例如, http://stackoverflow.com/questions/203/what-is-the-proper-way-to-debug-an-npm-script-using-vscode/43212281#43212281。 如果您的'run'任務也編譯源代碼,那麼您可以使用'preLaunchTask'選項集來定義一個Node.js調試配置。 –

+0

@jsynowiec它的後者,你能指導我如何實現這個 – lboyel

回答

1

如果要調試編譯代碼,則必須在tasks.json中定義構建任務,然後在launch.json配置中將其指定爲preLaunchTask

還記得增加您的構建配置,以便它輸出源地圖。使用源映射,可以單步執行或在原始源中設置斷點。

您需要配置tasks.json文件中的任務(位於工作區.vscode文件夾下)。如果您還沒有一個tasks.json文件,運行任務:配置從命令面板任務運行行動( + + 在Windows/Linux的P在MacOS或F1)將提供你有一組模板可供選擇。從列表中選擇Grunt,它會生成一個文件看起來應該像這樣的:

{ 
    // See https://go.microsoft.com/fwlink/?LinkId=733558 
    // for the documentation about the tasks.json format 
    "version": "0.1.0", 
    "command": "grunt", 
    "isShellCommand": true, 
    "args": ["--no-color"], 
    "showOutput": "always" 
} 

現在您可以定義生成任務:

{ 
    ... 
    "showOutput": "always", 
    "tasks": [ 
    { 
     "taskName": "build", 
     "args": [], 
     "isBuildCommand": true 
    } 
    ] 

假設你的咕嚕建立你的應用程序從src/app.jsdist ,你可以定義你的啓動配置是這樣的:

{ 
    "type": "node", 
    "request": "launch", 
    "name": "Launch", 
    "program": "${workspaceRoot}/src/app.js", 
    "sourceMaps": true, 
    "outFiles": ["${workspaceRoot}/dist/**/*.js"], 
    "preLaunchTask": "build" 
} 

您可以在VS代碼文檔閱讀更多 - Node.js Debugging in VS Code

+0

謝謝,這是非常有用的 – lboyel