问答

mocha支持ES6报错

作者:admin 2021-04-30 我要评论

一、package.json script: "test": "mocha --require @babel/register", 依赖 "@babel/cli": "^7.12.16","@babel/core": "^7.12.16","@babel/preset-env": "^7.1...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

一、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 的时候必须写全路径加后缀,项目根目录也无法识别,必须各种..到跟,而这些实际项目开发打包的时候都是省略的,所以如果要强行支持这个单元测试,需要追溯修改之前写的代码

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • mocha支持ES6报错

    mocha支持ES6报错

  • 2021-02-16:n皇后问题。给定一个整数n

    2021-02-16:n皇后问题。给定一个整数n

  • AFNetworking的uploadTask怎么写?

    AFNetworking的uploadTask怎么写?

  • vim E492不是编辑器的命令(Vexplore和

    vim E492不是编辑器的命令(Vexplore和

腾讯云代理商
海外云服务器