意外的令牌导出开玩笑

Exp*_*lls 8 javascript typescript jestjs

我已经看到了描述此问题的其他一些答案和 GitHub 问题,但在我的案例中我找不到解决方案。我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';
Run Code Online (Sandbox Code Playgroud)

运行这些测试的代码工作正常。错误似乎来自开玩笑本身。它看起来像笑话正在改变文件,但我可能是错的。

我的笑话配置是

"jest": {
  "preset": "jest-preset-angular",
  "setupTestFrameworkScriptFile": "<rootDir>/setup-jest.ts",
  "transformIgnorePatterns": [
    "node_modules"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我试过更新transformIgnorePatternsto"<rootDir>/node_modules/(?!@agm)""node_modules/(?!@agm)", "node_modules/(?!@agm/core)",但这些似乎都没有任何区别。

我怎样才能开玩笑地正确处理从 导入的文件@agm/core

Exp*_*lls 4

为了让它发挥作用,我需要进行一些更改。@agm/core这应该可以解决与 jest 一起使用 Angular 6 应用程序时的问题。

yarn add --dev babel-preset-env
Run Code Online (Sandbox Code Playgroud)

你应该已经有了babel-jest

然后更新你的 jest 配置:

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

.babelrc如果没有的话,您还需要添加一个来使用:

{
  "presets": ["babel-preset-env"]
}
Run Code Online (Sandbox Code Playgroud)

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