reactjs - 试图整合 jest 并与 amchart 做出反应,但出现错误。可能是什么问题?
问题描述
以下是我在运行 npm test 时遇到的错误:
export { System, system } from "./.internal/core/System";
^^^^^^
SyntaxError: Unexpected token export
1 | import React from 'react';
> 2 | import * as am4core from "@amcharts/amcharts4/core";
3 | import * as am4charts from "@amcharts/amcharts4/charts";
at ScriptTransformer._transformAndBuildScript (node_modules/jest-runtime/node_modules/@jest/transform/build/ScriptTransformer.js:537:17)
解决方案
AmCharts 以 ES2015 标准提供他们的包,因此它不支持 IE9 或任何旧浏览器。
React 默认脚本强制所有使用的库编译为与 CommonJS 兼容。
默认情况下,Jest 不编译任何 node_modules 并尝试按原样运行 amCharts 代码并失败。
如果您从 react-scripts 中弹出,那么您可以更新 jest 配置:
"jest": {
"transformIgnorePatterns": [
"[/\\\\]node_modules[/\\\\](?!(@amcharts)\\/).+\\.(js|jsx|ts|tsx)$"
],
...
}
如果您不想弹出,则需要使用 transformIgnorePatterns 作为 cli 选项:
react-scripts test --transformIgnorePatterns '[/\\\\]node_modules[/\\\\](?!(@amcharts)\\/).+\\.(js|jsx|ts|tsx)$'"
注意: React 团队使用此选项的原因之一是,您在测试中的代码将与生产中的代码不同(已编译与未编译),但只要您不测试图表而只是将它们模拟为依赖关系应该没事。
推荐阅读
- flutter - 垂直视口被赋予了无限的高度
- symfony - VichUploaderBundle Symfony3 imageFile 返回 null
- c# - 从后台线程更新 UI
- javascript - 基于其他数组从javascript中的数组中删除项目
- c - 如何跨多行、多空格等读取用户输入?
- redirect - 有没有办法加快谷歌优化重定向或在服务器端进行?
- java - 传递参数时如何创建java数组?
- python - 预训练的 Keras Inception 中没有形状与训练后要求的形状
- python - 带有按钮的 PyQt 中的 VTK 集成
- ruby - Mac OS X 批量重命名文件(2 种模式)