我不得不迁移到最新的角度版本 . 在此之后,业力测试停止工作,并继续使用错误日志粉碎:
14 04 2018 14:17:00.453:ERROR [preprocess]:无法加载“@ angular-devkit / build-angular”,它未注册!也许你错过了一些插件? ... \ parkandrest的UI \ node_modules \ @角的devkit \集结角的\ src \角CLI-文件\插件\包\ angular_devkit \ build_angular的\ src \角CLI-文件\插件\ karma.ts:52 const options = config.buildWebpack.options; ^ TypeError:无法读取init的未定义属性'options'(... \ parkandrest-ui \ node_modules \ @ angular-devkit \ build-angular \ src \ angular-cli-files \ plugins \ packages \ angular_devkit \ build_angular \ src \ angular-cli-files \ plugins \ karma.ts:52:39)在Injector.get( . 的Array.invoke(... \ parkandrest-ui \ node_modules \ di \ lib \ injector.js:75:15)处 . .. \ parkandrest-ui \ node_modules \ di \ lib \ injector.js:48:43)在E:\ Workspace \ Training \ spring-boot-tutorial \ parkandrest-ui \ node_modules \ karma \ lib \ server.js:166 :在Injector.invoke(... \ parkandrest-ui \ node_modules \)的Server._start(... \ parkandrest-ui \ node_modules \ karma \ lib \ server.js:165:21)的Array.forEach()20处: di \ lib \ injector.js:75:15)在Object的Server.start(... \ parkandrest-ui \ node_modules \ karma \ lib \ server.js:126:18)处 .
我的karma.conf.js文件如下所示:
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-coverage-istanbul-reporter'),
require('@angular-devkit/build-angular/plugins/karma')
],
client:{
clearContext: false // leave Jasmine Spec Runner output visible in browser
},
files: [
{ pattern: './src/test.ts', watched: false }
],
preprocessors: {
'./src/test.ts': ['@angular-devkit/build-angular']
},
mime: {
'text/x-typescript': ['ts','tsx']
},
coverageIstanbulReporter: {
dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ],
fixWebpackSourcePaths: true
},
angularCli: {
config: './angular.json',
environment: 'dev'
},
reporters: config.angularCli && config.angularCli.codeCoverage
? ['progress', 'coverage-istanbul']
: ['progress', 'kjhtml'],
port: 9876,
colors: true,
logLevel: config.LOG_INFO,
autoWatch: true,
browsers: ['Chrome'],
singleRun: false
});
};
@ angular-devkit \ build-angular当然是安装的 . 我感谢任何帮助 .
编辑:我有一个解决方案,实际上将我的问题的大多数用户答案与我自己的答案结合起来 . 首先,我将整个项目更新为稳定的角度6版本 . 接下来,我生成了像@ R.Richards建议的空项目,然后我用新的项目替换了旧项目中的几乎所有配置 . 最后,我遇到了@Suvendu警告我的问题 . 我用他的解决方案来解决它 . 不幸的是,我的环境仍然存在一个问题(Intellij IDEA 2017.3.4 Ultimate),它不允许我直接从我的IDE开始业力测试(我有同样的错误@Suvendu提到的),但是,这是一个主题下一个问题 .
5 回答
我的解决方案有点不同,因为我不得不移动karma.conf.js .
更新所有依赖项并确保应用程序本身按预期工作
如果尚未完成:在karma.conf.js中用
@angular-devkit/build-angular
替换@angular/cli
的每一个匹配项完全从karma.conf.js中删除
files
和preprocessor
配置 . 这都是在angular.json中定义的,应该由@ anguler-devkit karma插件自动处理 .找不到模块“@ angular-devkit / build-angular”
这对我的项目有用:
npm install -g @ angular / cli
npm install @ angular / cli
ng update @ angular / cli --migrate-only --from = 1.7.0
ng update @ angular / core
npm install rxjs-compat
ng服务
我希望这对你有用!
尝试使用npm安装karma-webpack然后将其添加到plugins数组 -
并用这个替换预处理器 -
这在我的案例中有效,也适用于以下预期的未来错误 -
希望这可以帮助 .
我跟着this guide做了一个干净的项目迁移,这为我解决了同样的问题 .
我的解决方案是我的NODE_ENV环境变量设置为“ 生产环境 ” . 在尝试升级到Angular 6时,我没有意识到我的devDependencies中列出了@ angular-devkit / build-angular,它们未安装在 生产环境 环境中 .
运行“未设置的NODE_ENV”并从/ etc / environment中删除NODE_ENV修复了我的问题 . (注意:在实际 生产环境 环境中小心更改此变量) .