对于使用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。
答案 0 :(得分:3)
@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-43ei或http://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"]
]
}