如何解决Mocha测试对本地ES6模块具有“ ESM”支持
Alex Gibson发表了很棒的帖子“ Testing native ES modules using Mocha and esm”。谢谢他。
我尝试在项目中使用具有本机ES模块支持的mocha,但遇到2个不同的错误:
$ ./node_modules/mocha/bin/mocha --require esm './test/Util.test.js'
TypeError [ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING]: A dynamic import callback was not specified.
at exports.importModuleDynamicallyCallback (internal/process/esm_loader.js:41:9)
at formattedImport (/.../node_modules/mocha/lib/esm-utils.js:6:23)
at Object.exports.requireOrImport (/.../node_modules/mocha/lib/esm-utils.js:23:14)
at Object.exports.loadFilesAsync (/.../node_modules/mocha/lib/esm-utils.js:33:34)
at Mocha.loadFilesAsync (/.../node_modules/mocha/lib/mocha.js:427:19)
...
$ /usr/bin/node /.../node_modules/mocha/bin/mocha -r esm --ui bdd --reporter \
/.../PHPStorm/plugins/NodeJS/js/mocha-intellij/lib/mochaIntellijReporter.js \
/.../test/Util.test.js
TypeError: Invalid host defined options
at formattedImport (/.../node_modules/mocha/lib/esm-utils.js:6:23)
at Object.exports.requireOrImport (/.../node_modules/mocha/lib/esm-utils.js:23:14)
at Object.exports.loadFilesAsync (/.../node_modules/mocha/lib/esm-utils.js:33:34)
at Mocha.loadFilesAsync (/.../node_modules/mocha/lib/mocha.js:427:19)
...
解决方法
更新:我认为该错误的原因是--require esm
参数中的mocha
选项与其他指示源是ES6模块的方法({{1 }}或*.mjs
中的type
选项)。我当前的测试具有package.json
扩展名,并且在.mjs
中没有"type": "module"
的情况下也会发生相同的错误
老员工
我一直在寻找原因,这就是原因-我自己的package.json
:
package.json
来自nodejs.org的注释:
Node.js默认将JavaScript代码视为CommonJS模块。作者可以通过.mjs文件扩展名,package.json“类型”字段或--input-type标志,告诉Node.js将JavaScript代码视为ECMAScript模块。
只需从您的"type": "module"
中删除"type": "module"
,然后package.json
就可以在mocha
支持下运行测试,如Alex Gibson的帖子所述。
这是我的测试仓库,其中包含尝试使用的代码:flancer64/so_mocha_esm
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。