mocha支持ES6报错
一、package.json
script:
"test": "mocha --require @babel/register",
依赖
"@babel/cli": "^7.12.16",
"@babel/core": "^7.12.16",
"@babel/preset-env": "^7.12.16",
"@babel/register": "^7.12.13",
二、babelrc
{
"presets": [
[
"@babel/preset-env",
{
"modules": false,
"useBuiltIns": "usage"
}
]
]
}
三、使用test下文件
import {Iface} from 'src/index.js'
四、报错
import { Iface, Stack } from 'src/index.js';
^^^^^^
SyntaxError: Cannot use import statement outside a module
at wrapSafe (internal/modules/cjs/loader.js:1054:16)
at Module._compile (internal/modules/cjs/loader.js:1102:27)
at Module._compile (/Users/vincent/Demo/data-tools-pro/data-tools/node_modules/pirates/lib/index.js:99:24)
五、其他解决方案
直接使用node的支持方式:
mocha本身不支持ES6语法所以import报错,官网说明如下,https://mochajs.org/#nodejs-n..., 大致意思是直接支持ES6跟着node走,node支持后,mocha不需要进行任何修改,所以实际解决方案:
1、升级node到最新稳定版本
2、配置package.js, 添加 "type": "module",
3、test只需要允许mocha,之前添加的babel删除
不过这个真的不好用,import 的时候必须写全路径加后缀,项目根目录也无法识别,必须各种..到跟,而这些实际项目开发打包的时候都是省略的,所以如果要强行支持这个单元测试,需要追溯修改之前写的代码
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论