我有一个 Angular 8,它使用 karma/jasmine 来运行一些单元测试。我可以通过执行以下命令来运行测试
ng test
但出现以下错误:
./src/polyfills.ts 中的错误找不到模块:错误:无法解析 'zone.js/dist/zone' 中 'C:\PrjNET\Elevation3\FW .00\Project\Framework\Development\Client\ElevationJS\shell\src' 解析 'zone.js/dist/zone' 中 'C:\PrjNET\Elevation3\FW .00\Project\Framework\Development\Client\ElevationJS\shell\src'
有谁知道怎么解决吗?
zone-testing
仅存在于0.8.19
。尝试安装最新版本。使用:
npm i zone.js
以上命令适用于我的情况。
我发现我在
tsconfig.spec.json
上的测试配置是错误的。所以我改变了:
{
"extends": "./tsconfig.es5.json",
"compilerOptions": {
"outDir": "../out-tsc/spec",
"module": "commonjs",
"target": "es6",
"baseUrl": "",
"types": [
"jest",
"node"
]
},
"files": [
"test.ts",
"polyfills.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}
对此:
{
"extends": "./tsconfig.es5.json",
"compilerOptions": {
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"outDir": "../out-tsc/spec",
"module": "commonjs",
"types": [
"jasmine",
"node"
]
},
"files": [
"test.ts",
"polyfills.ts"
],
"include": [
"**/*.spec.ts",
"**/*.d.ts"
]
}
错误消失了!
基本上导入有问题。所以我在node_modules/core-js中查找reflect文件夹,然后在polyfills.js中复制粘贴相同的路径。 成功了。
来自
import "core-js/es/reflect";
import "core-js/es7/reflect";
到
import "core-js/es/reflect";