javascript - node - 如何在 nyc 和 mocha 中使用 source-map
问题描述
所以 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)
我不确定如何使用源地图来解决这个问题。文档状态:
使用源映射的准确堆栈跟踪。
当 producer-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
}
但这条线仍然被破坏了。
解决方案
它工作的基本前提条件是(如此处所述):
npm install --save-dev source-map-support
确保nyc
是^10.3.2
(10.3.0
被打破)。
"devDependencies": {
...
"mocha": "^3.3.0",
"nyc": "^10.3.2",
"source-map-support": "^0.4.15",
}
nyc
配置应该是"sourceMap": true, "produce-source-map": true
.
并且文档解释了如何使用它们:
命令行使用
node -r source-map-support/register compiled.js
程序化使用
将以下行放在编译文件的顶部。
require('source-map-support').install();
还可以通过添加注释来定义映射文件名:
//# sourceMappingURL=filename.js.map
推荐阅读
- thymeleaf - Thymeleaf:使用 #session 时偶尔出错 - 评估 SpringEL 表达式时出现异常
- php - 根据特定参数在 Laravel 中对数组进行排序
- php - Laravel - 如果表存在,则仅查询模型
- node.js - Nodejs/Socket.emit 不工作,找不到数据
- android - 我们如何阻止电话、短信和通知?
- typescript - 打字稿错误:TS2304 找不到名称
- sql - 导入数据库(传输wordpress站点数据库)
- arrays - 在 Julia 1.0 中对特征值/特征向量进行排序
- swift - 如何将值转换为 CGPoint?
- isabelle - 对两个变量进行归纳?