mocha支持ES6报错

发布于 2022-09-12 22:25:49 字数 1247 浏览 26 评论 0

一、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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文