node - 如何使用nyc和mocha的source-map

A. *_*Lau 11 javascript mocha.js node.js istanbul nyc

因此,nyc正在修改我的文件,如下所示:

  at _onCreate (src/post/admin.js:1:10453)
  at doQuery (src/db.js:59:216)
  at process._tickCallback (internal/process/next_tick.js:68:7)
Run Code Online (Sandbox Code Playgroud)

我不确定如何使用源地图解开这个.文档说明:

使用源映射准确的堆栈跟踪.

当produce-source-map设置为true时,已检测的源文件将包含instrumenter转换的内联源映射.与源映射支持结合使用时,已检测代码的堆栈跟踪将反映其原始行.

所以我尝试了以下npm run命令:

"NODE_ENV=test nyc mocha --require ./tests/setup.js --require source-map-support/register --produce-source-map true --bail ./tests/unit/$FILE"
Run Code Online (Sandbox Code Playgroud)

结合纽约设置:

"nyc": {
    "include": [
        "src"
    ],
    "exclude": [
        "./tmp/**/*",
        "./tests"
    ],
    "instrument": true,
    "report-dir": "./tests/coverage",
    "temp-dir": "./tests/temp",
    "source-map": true,
    "produce-source-map": true
}
Run Code Online (Sandbox Code Playgroud)

但线路仍然受损.

Mar*_*ler 9

基本的先决条件,它的工作将是(描述这里):

npm install --save-dev source-map-support
Run Code Online (Sandbox Code Playgroud)

确保nyc^10.3.2(10.3.0被打破).

"devDependencies": {
    ...
    "mocha": "^3.3.0",
    "nyc": "^10.3.2",
    "source-map-support": "^0.4.15",
}
Run Code Online (Sandbox Code Playgroud)

nyc配置应该是"sourceMap": true, "produce-source-map": true.

并且文档解释了如何使用它们:

CLI用法

node -r source-map-support/register compiled.js
Run Code Online (Sandbox Code Playgroud)

程序化使用

将以下行放在编译文件的顶部.

require('source-map-support').install();
Run Code Online (Sandbox Code Playgroud)

也可以通过添加注释来定义映射文件名:

//# sourceMappingURL=filename.js.map
Run Code Online (Sandbox Code Playgroud)