首页 文章

角度6和业力'Can not load “@angular-devkit/build-angular”, it is not registered'

提问于
浏览
15

我不得不迁移到最新的角度版本 . 在此之后,业力测试停止工作,并继续使用错误日志粉碎:

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 回答

  • 18

    我的解决方案有点不同,因为我不得不移动karma.conf.js .

    • 更新所有依赖项并确保应用程序本身按预期工作

    • 如果尚未完成:在karma.conf.js中用 @angular-devkit/build-angular 替换 @angular/cli 的每一个匹配项

    • 完全从karma.conf.js中删除 filespreprocessor 配置 . 这都是在angular.json中定义的,应该由@ anguler-devkit karma插件自动处理 .

  • 1

    找不到模块“@ 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服务

    我希望这对你有用!

  • 1

    尝试使用npm安装karma-webpack然后将其添加到plugins数组 -

    plugins: [
      ...
      require('karma-webpack'),
      ...
    ],
    

    并用这个替换预处理器 -

    preprocessors: {
      './src/test.ts': ['webpack']
    },
    

    这在我的案例中有效,也适用于以下预期的未来错误 -

    错误:'@ angular-devkit / build-angular / plugins / karma'karma插件意味着在Angular CLI中使用,并且无法在其外部正常工作 .

    希望这可以帮助 .

  • 1

    我跟着this guide做了一个干净的项目迁移,这为我解决了同样的问题 .

  • 8

    我的解决方案是我的NODE_ENV环境变量设置为“ 生产环境 ” . 在尝试升级到Angular 6时,我没有意识到我的devDependencies中列出了@ angular-devkit / build-angular,它们未安装在 生产环境 环境中 .

    运行“未设置的NODE_ENV”并从/ etc / environment中删除NODE_ENV修复了我的问题 . (注意:在实际 生产环境 环境中小心更改此变量) .

相关问题