React项目执行npm run test时Jest遇意外token错误求助
解决Jest解析use-global-hook时的Unexpected token 'export'错误
这个问题的核心原因是:use-global-hook库的源码使用了ES模块的export语法,但它并没有被预编译成Jest/Node.js能直接识别的CommonJS格式,而Jest默认会跳过转译node_modules目录下的文件,导致解析失败。
这里有个简单的解决方案,不需要eject Create React App的配置:
- 在你的
package.json文件中,添加Jest的自定义配置,让它对use-global-hook进行转译:
"jest": { "transformIgnorePatterns": [ "node_modules/(?!use-global-hook/)" ] }
这个配置的意思是:Jest会忽略转译node_modules下的所有模块,除了use-global-hook。这样Babel就会把这个库的ES模块语法转换成Jest能理解的CommonJS格式。
- 保存package.json后,重新运行测试命令:
npm run test
原理补充:
默认情况下,Jest假设node_modules里的库都已经做好了兼容处理,但有些小库可能只发布了未编译的ES源码,这时候就需要我们手动告诉Jest不要忽略这些库的转译。你的项目已经安装了@babel/plugin-transform-modules-commonjs,刚好可以用来处理ES模块到CommonJS的转换,所以这个方案可以直接生效。
内容的提问来源于stack exchange,提问作者jepM16
相关产品推荐
相关产品推荐

