Ecmascript 6 带ES6模块的babel jest
我很高兴地使用Node8.6,打开了实验ES6模块选项(--实验模块)。这使我能够完美地为node编写简单的ES2015代码,而无需babel 问题是,当我尝试使用jest创建一些测试时,它失败了,并抱怨语法错误:“意外的令牌导入” .lrc配置如下所示:Ecmascript 6 带ES6模块的babel jest,ecmascript-6,jestjs,babeljs,es6-modules,babel-jest,Ecmascript 6,Jestjs,Babeljs,Es6 Modules,Babel Jest,我很高兴地使用Node8.6,打开了实验ES6模块选项(--实验模块)。这使我能够完美地为node编写简单的ES2015代码,而无需babel 问题是,当我尝试使用jest创建一些测试时,它失败了,并抱怨语法错误:“意外的令牌导入” .lrc配置如下所示: { "env": { "test": { "presets": [ ["env", { "targets": { "node": "8.6"
{
"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>)
/app/tests/integration/controller/data provider/Credentials/CredentialsList.action.test.js:2
从“../../../../imports/models/data provider/Credentials.mjs”导入{Credentials,AdWordsCredentials};
^^^^^^
SyntaxError:意外的令牌导入
在ScriptTransformer.\u transformAndBuildScript(节点\u模块/jest运行时/build/script\u transformer.js:305:17)
在Generator.next()处
允诺
相关套餐:
- 巴别塔核心@^6.26.0
- 开玩笑21.2.1
- 巴别塔开玩笑@21.2.0
- 巴别塔预设环境@^1.6.0
更新:我尝试在没有babel的情况下使用以下命令调用jest,没有任何更改:
node--experimental modules node\u modules/.bin/jest
jest有一个自定义的require
实现来帮助模拟。不幸的是,这使得jest与节点——实验模块
不兼容。Babel可能是在jest中使用ES6模块的最佳方式。请看我没有被用来开玩笑,我不确定这是否能解决问题,但我希望这能帮助你
节点仍然不支持所有语法。如果您真的想以更快的方式开始开发,使用具有ECMAScript 2017所有功能的源代码,那么您需要一个像@kawix/core这样的模块
README.md是如何说的,它允许您使用包括“导入”和“异步/等待”在内的所有功能,并且还支持typescript和其他良好的功能,所有这些功能都没有太多的依赖关系。您可以直接与cli一起使用:
>npm安装-g@kawix/core
>kwcore/path/to/fullsyntaxtsupport.js
或者,如果希望以编程方式包含,请创建一个文件example 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)
})
找到答案了吗?两年后,我仍然有同样的问题。