Jest解析node_modules依赖时出现Unexpected token 'export'错误的解决方案求助
解决Jest无法解析node_modules中依赖的ES模块语法问题
我懂你现在的困扰——Jest报错说quick-lru/index.js里的export语法不被识别,这是因为你只给geotiff开了转译白名单,但它的依赖quick-lru同样是未转译的ES模块,Jest默认不会处理node_modules里的这类代码,所以才会抛出语法错误。
直接解决方案
修改你jest.config.ts中的transformIgnorePatterns配置,把quick-lru也加入到白名单中:
"transformIgnorePatterns": [ "node_modules/(?!(geotiff|quick-lru)/)" ],
为什么之前的配置没用?
Jest默认会跳过node_modules目录下的代码转译,但有些第三方库(比如quick-lru)发布的源码就是原生ES模块,而你的Jest环境暂时还没配置成直接支持这类模块。你之前只添加了geotiff,但geotiff内部依赖的quick-lru并没有被纳入转译范围,所以Jest还是无法解析它的语法。
额外排查点
如果修改后还是有问题,可以检查这两个地方:
- Babel配置:确保你的
@babel/preset-env能适配当前Node版本,比如在项目的.babelrc或babel配置文件中:{ "presets": [ ["@babel/preset-env", { "targets": { "node": "current" } }], "@babel/preset-react", "@babel/preset-typescript" ] } - Jest的transform规则:把JS相关的转译规则调整得更宽泛,覆盖更多模块类型:
"transform": { "^.+\\.(js|jsx|mjs|cjs)$": "<rootDir>/node_modules/babel-jest", "^.+\\.tsx?$": "<rootDir>/config/jest/typescriptTransform.js", "^.+\\.css$": "<rootDir>/config/jest/cssTransform.js", },
这样调整后,Jest就会对geotiff和它的依赖quick-lru都进行转译,应该就能解决这个语法错误了。
内容的提问来源于stack exchange,提问作者MR J
相关产品推荐
相关产品推荐

