React应用运行测试时Jest报Unexpected Token错误求助
解决方案:Jest遇cheerio语法错误(Node v8环境)
问题根源
Node.js v8.15.1不支持ES2019的可选catch绑定语法(即不带参数的catch {}),但项目依赖的cheerio版本使用了该语法,导致Jest在处理cheerio代码时抛出SyntaxError: Unexpected token {,错误定位到cheerio的attributes.js第300行。
可用修复方案(符合你不能修改指定文件的限制)
方案1:安装兼容Node v8的cheerio版本
直接通过npm命令安装适配Node.js v8的cheerio旧版本,覆盖当前依赖(不修改package.json):
npm install cheerio@1.0.0-rc.3 --no-save
该版本未使用可选catch绑定语法,可在Node v8环境正常运行,--no-save参数确保不会修改项目的依赖配置文件。
方案2:通过命令行强制Jest转译cheerio
如果无法安装指定版本,可通过Jest命令行参数强制转译cheerio模块,将其代码转为Node v8兼容的语法:
npx jest --transform='{"^.+\\.js$": "babel-jest"}' --transformIgnorePatterns 'node_modules/(?!cheerio)/'
这条命令会让Jest用babel-jest处理所有JS文件,同时仅排除cheerio之外的node_modules模块,确保cheerio的代码被转译。
验证
执行上述任一方案后,重新运行测试:
npm test
内容的提问来源于stack exchange,提问作者Arun Muralidharan
相关产品推荐
相关产品推荐

