Angular单元测试报错:需启用allowSyntheticDefaultImports导入moment
解决思路
检查Karma配置是否使用了测试专用的TypeScript配置文件
多数Angular项目的单元测试会单独使用tsconfig.spec.json而非主项目的tsconfig.json。打开karma.conf.js,查找tsConfig或typescriptPreprocessor相关配置项,确认指定的配置文件。如果是tsconfig.spec.json,需要在该文件的compilerOptions中添加"allowSyntheticDefaultImports": true和"esModuleInterop": true。调整moment的导入写法
尝试两种导入方式验证是否解决问题:- 默认导入:
import moment from 'moment'; - 命名导入:
import * as moment from 'moment';
- 默认导入:
更新Karma相关TypeScript插件版本
若使用karma-typescript等插件,旧版本可能对新TypeScript配置支持不足。执行命令更新插件:npm update karma-typescript typescript清理测试缓存
缓存可能导致配置未生效,执行以下命令清理:rm -rf node_modules/.cache/karma npm run test -- --no-cache
内容的提问来源于stack exchange,提问作者Subburaj
相关产品推荐
相关产品推荐

