4

我正在嘗試使用VS代碼調試夜間e2e測試。我使用typescript編寫我的測試。它只能在js文件中放置一個斷點時才起作用,然後到達ts文件,我可以從那裏調試它。如果我把它放在我的測試的ts文件中 - 它永遠不會停下來,它會被寫入「」斷點被忽略,因爲生成的代碼沒有找到。「我的源文件使用ts編譯器編譯到文件夾/ dist/dev/specs/e2e/nightwatch/src目錄,編號從launch.json如何在VS代碼中調試夜間測試

 "name": "Launch e2e Tests on chrome", 
     "type": "node", 
     "console": "integratedTerminal", 
     "program": "${workspaceRoot}/dist/dev/specs/e2e/nightwatch/nightwatch.js", 
     "stopOnEntry": false,. 
     "args": ["-env default,-f DatabaseChecks.js"], 
     "cwd": "${workspaceRoot}", 
     "runtimeExecutable": null,. 
     "runtimeArgs": ["--nolazy"], 
     "env": { 
      "NODE_ENV": "development" 
     }, 
     "sourceMaps": true, 
     "outFiles": ["${workspaceRoot}/dist/dev/specs/e2e/nightwatch/src"], 
     "request": "launch" 

也許有人有類似的問題?任何幫助,將不勝感激。

+0

您需要添加關於如何以及在哪裏編譯和保存源文件的信息。你已經將這個標記爲打字稿,所以我假設你編譯了ts - > js。我傾向於進行調試的方法是將tsc編譯爲臨時文件夾,然後將「outFiles」指向它。 –

+0

準確地說,我使用ts編譯器並將準備好的js文件放在我在「outFiles」中指定的文件夾中。因此,我有js和js.map文件。我試圖把確切的文件放在「outFiles」中,但仍然沒有運氣。 – Katia

+0

也許這個線程提供了所需的解決方案(在tsconfig.json中啓用內聯源地圖)。 https://groups.google.com/forum/#!topic/nightwatchjs/5pY0nKFTunQ – jannnik

回答

1

一兩件事,通常幫助我的情況時,我有調試服務器端的node.js aps - 將使用gulp-sourcemaps,並在那裏使用生成的源代碼路徑(通過將js.map文件中的「sources」屬性的值進行檢查),使它們成爲絕對的,並完美地匹配您的ts文件位置:

例如:

gulp.task('build',() => 
{ 
    var tsProject = ts.createProject('tsconfig.json', { 
     typescript: require('typescript') 
    }); 

    var tsResult = tsProject.src() 
     .pipe(sourcemaps.init()) 
     .pipe(tsProject()); 

     //Write compiled js 
    return tsResult.js.pipe(sourcemaps.write(
      ".", 
      { 
       includeContent: false, 
       mapSources: function(sourcePath) 
       { 
        //Play around here - converting your relative paths to absolute ones that match location of ts file perfectly 
        return sourcePath.replace('../../../', __dirname + '/'); 
       } 
      })).pipe(gulp.dest(TEMP_TARGET_FOLDER)); 
}); 

雖然這是一個有點hackish - 它每一次的作品對我來說,是相當簡單的設置。

+0

這也適用於我,謝謝! – Katia

1

您可以使用此配置,如果你不需要打字稿部分(上WebStorm建議爲基礎):

{ 
"version": "0.2.0", 
"configurations": [ 
    { 
     "type": "node", 
     "request": "launch", 
     "name": "Launch Program", 
     "program": "${workspaceRoot}/node_modules/nightwatch/bin/runner.js", 
     "args": [ 
      "--config", 
      "test/e2e/nightwatch.conf.js" 
     ] 
    } 
] 

}

+0

不適用於這個問題,因爲Katia要求提供打字稿啓用的修復程序,但這是Google的最佳結果,正是我需要的非打字稿解決方案。 –

0

我使用一個:

{ 
    "type": "node", 
    "request": "launch", 
    "name": "Nightwatch 2", 
    "port": 9229, 
    "program": "${workspaceRoot}/node_modules/nightwatch/bin/nightwatch", 
    "stopOnEntry": false, 
    "args": [ 
     "--env", 
     "localchrome" 
    ], 
    "cwd": "${workspaceRoot}", 
    "sourceMaps": false, 
    "env": { 
     "ENV": "s11", 
     "TAGS": "@WIP" 
    }, 
    "runtimeArgs": [ 
     "--inspect" 
    ] 
}