我很高兴使用节点8.6,并启用了实验性ES6模块选项(--experimental-modules)。这使我能够完美地为节点编写简单的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>)
相关套餐:
任何帮助将不胜感激。 谢谢:))
更新:我尝试使用以下命令调用没有babel的jest,没有任何更改:node --experimental-modules node_modules/.bin/jest
答案 0 :(得分:2)
Jest有require
的自定义实现来帮助进行模拟。不幸的是,这使得jest与node --experimental-modules
不兼容。 Babel可能是开玩笑使用ES6模块的最佳方式。见https://github.com/facebook/jest/issues/4842
答案 1 :(得分:0)
我并没有开玩笑,我不确定这是否可以解决,但是我希望这可以为您提供帮助。
Node仍然不支持所有语法。如果您确实正在寻找一种更快的开始开发的方式,请使用具有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)
})