Ecmascript 6 带ES6模块的babel jest

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"

我很高兴地使用Node8.6,打开了实验ES6模块选项(--实验模块)。这使我能够完美地为node编写简单的ES2015代码,而无需babel

问题是,当我尝试使用jest创建一些测试时,它失败了,并抱怨语法错误:“意外的令牌导入”

.lrc配置如下所示:

{
  "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)
})

找到答案了吗?两年后,我仍然有同样的问题。