使用jest时出现了意外的token export

8

我看到了一些其他的答案和GitHub问题描述了这个问题,但是在我的情况下,我还没有找到解决方案。当我尝试运行jest时,我遇到了可怕的SyntaxError: Unexpected token export

project/node_modules/@agm/core/index.js:1
({"Object.<anonymous>":function(module,exports,require,__dirname,__filename,global,jest){export * from './directives';

这些测试运行的代码本身没有问题。错误似乎来自于jest本身。似乎是jest正在转换文件,但我可能错了。

我的jest配置如下:

"jest": {
  "preset": "jest-preset-angular",
  "setupTestFrameworkScriptFile": "<rootDir>/setup-jest.ts",
  "transformIgnorePatterns": [
    "node_modules"
  ]
}

我尝试更新transformIgnorePatterns"<rootDir>/node_modules/(?!@agm)""node_modules/(?!@agm)""node_modules/(?!@agm/core)",但这些都似乎没有任何区别。
我该如何让jest正确处理从@agm/core导入的文件?
2个回答

4

为了使这个功能正常工作,需要进行几个更改。这将修复使用jest的Angular 6应用程序时使用@agm/core时遇到的问题。

yarn add --dev babel-preset-env

您应该已经安装了babel-jest

然后请更新您的jest配置:

"transform": {
  "^.+\\.js": "<rootDir>/node_modules/babel-jest"
},
"transformIgnorePatterns": [
  "<rootDir>/node_modules/(?!@agm)"
]

您还需要添加一个.babelrc文件,如果没有的话,请使用它:
{
  "presets": ["babel-preset-env"]
}

这可能适用于其他需要安装时进行Babel转换的库。

-1

我想补充一下,对于 Babel 7+ 版本,可以使用 babel.config.js 替代 .babelrc 文件:

module.exports = {
    presets: ['babel-preset-env'],
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接