节点-如何在nyc和mocha中使用source-map

时间:2018-10-24 01:39:55

标签: javascript node.js mocha 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)

我不确定如何使用源地图对此进行分解。文档状态:

使用源映射进行准确的堆栈跟踪。

当Produce-source-map设置为true时,被检测的源文件将包括用于检测器转换的内联源映射。与source-map-support结合使用时,已检测代码的堆栈跟踪将反映其原始行。

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

"NODE_ENV=test nyc mocha --require ./tests/setup.js --require source-map-support/register --produce-source-map true --bail ./tests/unit/$FILE"

结合nyc设置:

"nyc": {
    "include": [
        "src"
    ],
    "exclude": [
        "./tmp/**/*",
        "./tests"
    ],
    "instrument": true,
    "report-dir": "./tests/coverage",
    "temp-dir": "./tests/temp",
    "source-map": true,
    "produce-source-map": true
}

但该行仍被破坏。

1 个答案:

答案 0 :(得分:9)

它起作用的基本前提是(如here所述):

npm install --save-dev source-map-support

确保nyc^10.3.210.3.0已损坏)。

"devDependencies": {
    ...
    "mocha": "^3.3.0",
    "nyc": "^10.3.2",
    "source-map-support": "^0.4.15",
}

nyc的配置应为"sourceMap": true, "produce-source-map": true

documentation解释了如何使用它们:

CLI使用情况

node -r source-map-support/register compiled.js

程序用法

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

require('source-map-support').install();

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

//# sourceMappingURL=filename.js.map