使用 Babel 7 运行 Mocha 6 ES6 测试,如何设置?

mip*_*phe 9 mocha.js npm transpiler babeljs

对于用 ES6/7 编写的库,我想将该库编译(到 ES5)到一个 dist/ 文件夹。我还想为这个库运行测试(用 ES6/7 编写)。

我的开发依赖项如下所示(package.json):

"devDependencies": {
  "@babel/cli": "^7.4.4",
  "@babel/core": "^7.4.5",
  "@babel/preset-env": "^7.4.5",
  "@babel/register": "^7.4.4",
  "chai": "^4.2.0",
  "mocha": "^6.1.4",
  "sinon": "^7.3.2"
},
Run Code Online (Sandbox Code Playgroud)

我的构建和测试脚本如下所示 (package.json):

"scripts": {
  "test": "mocha --require @babel/register",
  "build": "babel src -d dist --presets=@babel/preset-env"
},
Run Code Online (Sandbox Code Playgroud)

跑步npm run build效果很好。dist/ 文件夹中填充了转换后的文件。

跑步npm run test似乎不起作用 - 这是我的问题。

> mocha --require @babel/register

/Users/dro/Repos/lib/node_modules/yargs/yargs.js:1163
      else throw err
           ^

ReferenceError: regeneratorRuntime is not defined
Run Code Online (Sandbox Code Playgroud)

最初我遇到了一个导入错误,通过添加 .babelrc 文件解决了这个错误。

下面是我的 .babelrc 文件内容。

{
  "presets": ["@babel/preset-env"]
}
Run Code Online (Sandbox Code Playgroud)

我正在读关于regeneratorRuntime它拉去约巴别塔,填充工具这个环节,他们解释,我不应该需要的是填充工具。

这将模拟完整的 ES2015+ 环境(没有 < 第 4 阶段提案),并且旨在用于应用程序而不是库/工具。

正确设置需要什么?


我没有使用 webpack。

Umb*_*bro 8

使用 Mocha 和 Babel 7 在 ES6 中进行测试。看这里:https : //dev.to/bnorbertjs/my-nodejs-setup-mocha--chai-babel7-es6-43eihttp://jamesknelson.com/testing-in -es6-with-mocha-and-babel-6/

npm install --save @babel/runtime 
npm install --save-dev @babel/plugin-transform-runtime
Run Code Online (Sandbox Code Playgroud)

并且,在 .babelrc 中,添加:

{
    "presets": ["@babel/preset-env"],
    "plugins": [
        ["@babel/transform-runtime"]
    ]
}
Run Code Online (Sandbox Code Playgroud)

  • dev.to 上的文章很有帮助,但仍然没有解决我的问题。他们正在使用 Mocha 5,其中提供了 `--compiler` 选项。在 Mocha 6 中,我们只能按照 [此处在编译器弃用文章中](https://github.com/mochajs/mocha/wiki/compilers-deprecation#what-should-i-use-instead) 所述使用`--require` -然后)。 (2认同)