2

我通常使用nyc为我的单元测试提供覆盖。用于 ES6 之前的测试的所有 honkey dorey require('myModule')。我无法让它与使用 ES6 导入的单元测试一起工作。没有覆盖的测试适用于--experimental-modules.mjs 文件:

包.json

"scripts": {
    "test": "node --experimental-modules ./test/test.mjs",
    ... others deleted to save space
},

一切正常。如果这很重要,我正在使用磁带进行测试。输出如下所示:

(node:9360) ExperimentalWarning: The ESM module loader is experimental.
TAP version 13
# number
ok 1 should be equal
(... more deleted)

但是当我尝试使用 nyc 时,例如nyc --reporter=lcov --extension .mjs npm test

我收到一个错误:

(node:7304) ExperimentalWarning: The ESM module loader is experimental.
Error [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension: C:/Users/Morgan/.node-spawn-wrap-6952-61a26e1bb867/node
    at exports.resolve (internal/loader/ModuleRequest.js:126:13)
    at Loader.resolve (internal/loader/Loader.js:48:40)
    ....

我使用的是节点版本 8.9.1 和纽约版本 13.0.1,在 Windows 上运行。

4

1 回答 1

2

正如文档所述,应明确添加 .mjs 支持:

支持文件扩展名可以通过配置参数或 package.json 中的 nyc config 部分进行配置。

nyc --extension .mjs npm test

{
  "nyc": {
    "extension": [
      ".mjs"
    ]
  }
}
于 2018-10-07T19:50:26.883 回答