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

时间:2019-06-20 09:29:44

标签: npm mocha babeljs babel transpiler

对于使用ES6 / 7编写的库,我想将该库编译(到ES5)到dist /文件夹。我还想为此lib运行测试(用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"
},

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

"scripts": {
  "test": "mocha --require @babel/register",
  "build": "babel src -d dist --presets=@babel/preset-env"
},

运行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

最初出现导入错误,此错误通过添加.babelrc文件解决。

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

{
  "presets": ["@babel/preset-env"]
}

我正在阅读有关regeneratorRuntime的内容,这使我进入this link about babel-polyfill,他们解释说我不需要那个polyfill。

  

这将模拟一个完整的ES2015 +环境(没有

正确设置此功能需要什么?


我没有使用webpack。

2 个答案:

答案 0 :(得分:3)

看看project documentation

@app.callback(
    [
        Output("download-excel", "href"),
        Output("download-excel", "color"),
        Output("download-excel", "target"),
    ],
    [Input("download-excel", "n_clicks")],
)
def download_excel_file(n_clicks):
    if n_clicks:
        excelfile = write_excel_file()  # creates an excel file using Pandas
        excelfile.seek(0)
        media_type = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
        data = base64.b64encode(excelfile.read()).decode("utf-8")
        href_data = f"data:{media_type};base64,{data}"

        return href_data, "success", href_data,
    else:
        return None, "secondary", None

在package.json文件中进行以下更改:

npm install --save-dev babel-register

某些功能需要使用polyfill:

{
  "scripts": {
    "test": "mocha --require babel-register"
  }
}
npm install --save-dev babel-polyfill

答案 1 :(得分:1)

使用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

然后在.babelrc中添加:

{
    "presets": ["@babel/preset-env"],
    "plugins": [
        ["@babel/transform-runtime"]
    ]
}