升级jest-preset-angular@8.3.0后报createStringLiteral未定义错误
问题根因
该报错由依赖版本不兼容直接导致:jest-preset-angular@8.x 系列仅适配 ts-jest@26.x、jest@26.x 版本,你升级到ts-jest@27.x、jest@27.x后,相关API发生了非兼容变更,因此出现属性读取失败的报错。
解决方案
按照以下步骤操作即可修复:
- 卸载现有不匹配的依赖
执行命令:
npm uninstall jest ts-jest jest-preset-angular
- 安装版本匹配的依赖组合
执行命令:
npm install -D jest@26.x ts-jest@26.x jest-preset-angular@8.3.1
- 清理缓存与残留文件,重新安装依赖
执行命令:
# 清理jest缓存 npx jest --clearCache # 删除旧的依赖文件与锁文件 # Mac/Linux执行: rm -rf node_modules package-lock.json # Windows CMD执行: rmdir /s /q node_modules && del package-lock.json # 重新安装依赖 npm install
- 修正jest配置(可选,建议补充)
在你的jest.config.js中补充transform字段,避免默认转换规则异常:
module.exports = { verbose: true, preset: 'jest-preset-angular', testRegex: './*\\.structural\\.test\\.ts$', setupFilesAfterEnv: ['./setupTests.ts'], // 新增transform配置 transform: { '^.+\\.(ts|js|html)$': 'jest-preset-angular' }, transformIgnorePatterns: ['/node_modules/'], globals: { 'ts-jest': { tsConfig: "tsconfig.spec.json" } } }
配置调整完成后重新运行测试命令即可正常执行。
内容的提问来源于stack exchange,提问作者r.wadera
相关产品推荐
相关产品推荐

