Nestjs单元测试报错:无法解析AppConfigService依赖如何解决?
解决Jest执行单元测试时"Cannot use import statement outside a module"报错的方案
从你提供的报错截图来看,核心问题是Jest默认不识别ES模块的import/export语法,下面是几种可行的解决方法:
配置Jest配合Babel转译ES模块
- 先安装必要依赖:
npm install --save-dev babel-jest @babel/core @babel/preset-env - 项目根目录新建或修改
jest.config.js:module.exports = { transform: { "^.+\\.(js|jsx|ts|tsx)$": "babel-jest" } }; - 新建或修改
.babelrc文件:{ "presets": [["@babel/preset-env", { "targets": { "node": "current" } }]] }
- 先安装必要依赖:
适配ES模块类型的项目
如果你的package.json里设置了"type": "module",需要额外配置Jest兼容ES模块:
在jest.config.js里添加:module.exports = { extensionsToTreatAsEsm: [".js", ".jsx", ".ts", ".tsx"], transform: { "^.+\\.(js|jsx|ts|tsx)$": "babel-jest" } };或者直接把测试文件的后缀改为
.cjs,避免和项目的ES模块规则冲突。处理第三方库的ES模块问题
如果是某些第三方依赖本身使用ES模块导致报错,可在jest.config.js里指定需要转译的库:module.exports = { transformIgnorePatterns: ["node_modules/(?!(第三方库名)/)"] };
内容的提问来源于stack exchange,提问作者Udara Jaywardena
相关产品推荐
相关产品推荐

