我很高兴地使用节点8.6,打开了实验性ES6模块选项(--实验性模块)。这使我能够完美地为节点编写普通的ES2015代码,而不需要babel。
问题是,当我尝试用jest创建一些测试时,它会失败,抱怨语法错误:“意外令牌导入”。
.babelrc配置如下:
{
"env": {
"test": {
"presets": [
["env", {
"targets": {
"node": "8.6"
}
}]
]
}
}
}我的jest.config.js如下:
module.exports = {
testMatch: ['/tests/**/*.js', '**/?(*.)test.js'],
}引发的错误:
/app/tests/integration/controller/data-provider/Credentials/CredentialsList.action.test.js:2
import { Credentials, AdWordsCredentials } from '../../../../../imports/models/data-provider/Credentials.mjs';
^^^^^^
SyntaxError: Unexpected token import
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/build/script_transformer.js:305:17)
at Generator.next (<anonymous>)
at Promise (<anonymous>)相关一揽子计划:
任何帮助都将不胜感激。谢谢:)
更新:我尝试使用以下命令调用jest而不使用babel,没有任何更改:node --experimental-modules node_modules/.bin/jest
发布于 2017-12-30 18:32:40
Jest有一个自定义的require实现来帮助模拟。不幸的是,这使得jest与node --experimental-modules不兼容。Babel可能是使用带有jest的ES6模块的最佳方法。请参阅https://github.com/facebook/jest/issues/4842
发布于 2019-03-02 21:28:41
我没有被用来开玩笑,我也不确定这是否会解决,但我希望这能帮助你。
节点仍然不支持所有语法。如果您真的在寻找一种更快的开发方式,使用Ecmascript2017的所有特性的源代码,您需要一个像@kawix/core https://www.npmjs.com/package/@kawix/core这样的模块。
README.md如何说,允许您使用所有特性,包括“导入”和“异步/等待”,还支持类型记录,以及其他好的特性--所有这些特性都没有太多的依赖关系。您可以直接与cli一起使用:
> npm install -g @kawix/core
> kwcore /path/to/fullsyntaxtsupport.js或者,如果希望以编程方式包含,请创建一个文件示例main.js,以导入完整的语法文件。
var kawix= require("@kawix/core")
kawix.KModule.injectImport()
kawix.KModule.import("/path/to/fullsyntaxtsupport.js").catch(function(e){
console.error("Some error: ",e)
})https://stackoverflow.com/questions/46636788
复制相似问题