Jest报错:Cannot use import statement outside a module 求助
解决Jest测试中
SyntaxError: Cannot use import statement outside a module的问题 1. 先清缓存,排除缓存干扰
有时候缓存会导致依赖解析异常,执行以下操作:
- 清除Jest缓存:
npx jest --clearCache - 清除Node模块缓存:
node --clear-module-cache - 重新安装依赖:
rm -rf node_modules package-lock.json && npm install
2. 检查axios是否被自动更新
即便你没改代码,若package.json里axios是宽松版本(比如^0.27.2),可能自动更新到了用ES模块的新版本:
- 查看当前axios版本:
npm list axios - 如果是v1.x+这类新版本,直接在package.json里锁定之前能正常运行的版本(比如
"axios": "0.27.2"),然后重新安装依赖
3. 调整Jest配置强制转译ES模块
在jest.config.js里添加配置,让Jest转译axios这类第三方ES模块:
module.exports = { transform: { '^.+\\.(js|jsx)$': 'babel-jest', }, transformIgnorePatterns: [ 'node_modules/(?!axios/)' // 不对axios做转译忽略 ] };
同时确保.babelrc配置正确,比如使用@babel/preset-env:
{ "presets": [ ["@babel/preset-env", { "targets": { "node": "current" } }] ] }
4. 检查Node.js版本是否变动
如果近期更新过Node.js,版本变化可能影响模块解析。可以切换回之前能正常运行的Node版本(比如用nvm:nvm use <旧版本号>),再测试是否恢复正常。
内容的提问来源于stack exchange,提问作者José Carlos
相关产品推荐
相关产品推荐

