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" 
    ] 
}