首页 > 解决方案 > 纽约 + 摩卡 + es6 模块

问题描述

我正在尝试使用 nyc + mocha 来获得使用 es6 模块语法的单元测试的测试覆盖率。当我运行mocha my_test.mjs一切正常。my_test.mjs 中的依赖项(使用本机导入)已正确解析。但是当我在这个命令前面加上 nyc:nyc mocha my_test.mjs它不再起作用,抛出这个错误:

node_modules/mocha/lib/esm-utils.js:6
    return import(url.pathToFileURL(file));
           ^^^^^^

SyntaxError: Unexpected token import
    at Module._extensions..js (module.js:663:10)
    at Object.replacementCompile (nodejs/core/tests/cache.install.nodejs_install/node_modules/append-transform/index.js:60:13)
    at Module._extensions..js (module.js:663:10)

我尝试了不同的变体nyc --require esm mocha my_test.mjs或强制--experimental-modules使用节点,但似乎没有任何效果。

注意,我使用的是最新版本的 node、nyc 和 mocha

任何想法?

标签: node.jsmocha.jsnyc

解决方案


对于任何通过搜索找到此内容的人来说,c8代码覆盖率工具对我来说是一个替代品。我实际上只是安装了它,并在我的 package.json 脚本中将 'nyc' 替换为 'c8' 。

此外,如果您好奇,这里是开放的(在我写这篇文章时)纽约问题:https ://github.com/istanbuljs/nyc/issues/659


推荐阅读