简体   繁体   English

升级到webpack 4后,Angular Application中的InjectionToken Config否

[英]No for InjectionToken Config in Angular Application after upgrading to webpack 4

I recently upgraded from Webpack 2 to 4. Webpack compiles, and most of the application works fine. 我最近从Webpack 2升级到了4。Webpack可以编译,并且大多数应用程序都可以正常运行。 It seems to of broken part of the application. 它似乎是应用程序的损坏部分。 I receive the error 我收到错误

NullInjectorError: No provider for InjectionToken config!

My module.ts file is as follows 我的module.ts文件如下

 import { enableProdMode, Inject, Injector, ErrorHandler } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppComponent } from './app.component'; import { WsBootstrapService } from '../services/bootstrap'; import { WsBrandTypesService } from '../services/brandTypes'; import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { RouterModule, UrlHandlingStrategy, UrlTree } from '@angular/router'; import { FormsModule } from '@angular/forms'; import { HashLocationStrategy, LocationStrategy } from '@angular/common'; import { UpgradeModule, downgradeComponent, downgradeInjectable } from '@angular/upgrade/static'; import { HttpModule } from '@angular/http'; import {HttpClientModule} from '@angular/common/http'; import { BopisTabModule } from './bopis-tab/bopis-tab.module'; import { BopisContainerComponent } from './bopis-tab/bopis-container/bopis-container.component'; import { RewardsModule } from './rewards/rewards.module'; import { RewardsComponent } from './rewards/rewards.component'; import { TransactionHistoryComponent } from './rewards/transaction-history/transaction-history.component'; import { wsdebugProvider, wsbackendProvider, $rootScopeProvider } from './upgrade/injectables'; import { Ng1CcuiDirective } from './upgrade/components'; import './downgrade/downgrade.injectables'; import './downgrade/downgrade.components'; import './rxjs-operators'; import { UserService } from './services/user.service'; import { StoreService } from './services/store.service'; import { WindowRefService } from './services/window-ref.service'; import { FeatureToggleService } from './services/feature-toggle.service'; import { DateService } from './services/date.service'; import { SpinnerService } from './services/spinner.service'; import { AlertService } from './services/alert.service'; import { ExceptionOverlayComponent } from './exception-overlay/exception-overlay.component'; import { ExceptionOverlayService } from './services/exception-overlay.service'; import { ObjToArrayPipe } from './pipes/obj-to-array.pipe'; import { NgTwoErrorHandlerService } from './services/ng-two-error-handler.service'; import { BopisCriticalCountService } from './bopis-tab/services/bopis-critical-count.service'; class HybridUrlHandlingStrategy implements UrlHandlingStrategy { // use only process the `/hero` url shouldProcessUrl(url: UrlTree) { return true } extract(url: UrlTree) { return url; } merge(url: UrlTree, whole: UrlTree) { return url; } } @NgModule({ declarations: [ AppComponent, Ng1CcuiDirective, ExceptionOverlayComponent, ObjToArrayPipe ], entryComponents: [ AppComponent, RewardsComponent, TransactionHistoryComponent ], imports: [ BrowserModule, FormsModule, UpgradeModule, RouterModule.forRoot([]), HttpModule, BopisTabModule, RewardsModule, HttpClientModule ], providers: [ { provide: ErrorHandler, useClass: NgTwoErrorHandlerService }, wsdebugProvider, wsbackendProvider, $rootScopeProvider, { provide: 'WsBootstrapService', useClass: WsBootstrapService }, { provide: 'WsBrandTypeService', useClass: WsBrandTypesService }, UserService, StoreService, WindowRefService, FeatureToggleService, DateService, SpinnerService, AlertService, ExceptionOverlayService, NgTwoErrorHandlerService, BopisCriticalCountService ] }) export class AppModule { constructor( @Inject(UpgradeModule) private upgrade: UpgradeModule) { } ngDoBootstrap() { this.upgrade.bootstrap(document.body, ['wsframework']); } } 

The full error message is 完整的错误消息是

 VM28381:4697 Error: StaticInjectorError(AppModule)[MaskService -> InjectionToken config]: StaticInjectorError(Platform: core)[MaskService -> InjectionToken config]: NullInjectorError: No provider for InjectionToken config! at _NullInjector.get (core.js:1224) at resolveToken (core.js:1522) at tryResolveToken (core.js:1464) at StaticInjector.get (core.js:1332) at resolveToken (core.js:1522) at tryResolveToken (core.js:1464) at StaticInjector.get (core.js:1332) at resolveNgModuleDep (core.js:11117) at NgModuleRef_.get (core.js:12350) at resolveDep (core.js:12840) 

My package.json file is as follows 我的package.json文件如下

 { "name": "ccui", "version": "1.0.0", "private": true, "description": "Care center UI.", "scripts": { "postinstall": "npm rebuild node-sass", "test:ng:ci": "npm run jest:ng -- --coverage --ci", "test:ng:dev": "npm run jest:ng -- --watch", "test:wc:ci": "npm run jest:wc -- --coverage --ci", "test:wc:dev": "npm run jest:wc -- --watch", "test:ci": "npm-run-all test:wc:ci test:ng:ci", "jest:ng": "jest --config ./jest/config.json ", "jest:wc": "jest --config ./jest/config.wc.json ", "prejest:ng": "npm run templatecache", "test": "npm-run-all --parallel test:wc:dev test:ng:dev ", "test:mvn": "npm run test:ci", "lint:ng2": "ng lint", "lint:ng1": "eslint ng1", "lint": "npm-run-all lint:ng2 lint:ng1", "build-ccui": "npm run build:prod", "rm:dist": "rimraf dist", "prebuild:dev": "npm-run-all rm:dist concat", "build:dev": "webpack --env.build=dev --progress --profile --colors", "rm:index": "rimraf ./index.html", "predev": "npm-run-all rm:index concat", "dev": "npm-run-all --parallel concat:watch dev:server ", "dev:server": "webpack-dev-server --env.build=dev --port=4200 ", "prebuild:prod": "npm-run-all rm:dist concat", "build:prod": "webpack --env.build=prod --progress --profile --colors", "concat": "gulp concat", "concat:watch": "gulp concat:watch", "templatecache": "gulp templatecache", "precommit": "npm run jest:ng -- -o && npm run jest:wc -- -o" }, "engines": { "node": "8.1.0" }, "keywords": [], "author": "WSI", "dependencies": { "@angular-devkit/core": "0.5.5", "@angular/animations": "5.2.9", "@angular/common": "5.2.9", "@angular/compiler": "5.2.9", "@angular/core": "5.2.10", "@angular/forms": "5.2.9", "@angular/http": "5.2.10", "@angular/platform-browser": "5.2.9", "@angular/platform-browser-dynamic": "5.2.9", "@angular/router": "5.2.9", "@angular/upgrade": "4.3.0", "@ngtools/webpack": "6.0.0-beta.8", "@webcomponents/webcomponentsjs": "1.0.22", "angular": "1.6.4", "angular-cookies": "1.6.4", "angular-i18n": "1.6.4", "angular-mocks": "1.6.4", "angular-route": "1.6.4", "angular-sanitize": "1.6.4", "angular-ui-mask": "1.8.7", "browser-split": "0.0.1", "class-list": "0.1.1", "core-js": "2.4.1", "font-awesome": "4.7.0", "html-element": "2.2.0", "identity-obj-proxy": "3.0.0", "jquery": "3.2.1", "lodash.clonedeep": "4.5.0", "lodash.flowright": "3.5.0", "lodash.intersection": "4.4.0", "lodash.isempty": "4.4.0", "lodash.isinteger": "4.0.4", "lodash.isplainobject": "4.0.6", "mitt": "1.1.3", "moment": "2.18.1", "moment-timezone": "0.5.13", "ngx-mask": "2.4.4", "npm": "5.8.0", "preact": "8.2.7", "primeng": "4.1.0", "raf": "3.4.0", "reflect-metadata": "0.1.10", "regenerator-runtime": "0.11.1", "rxjs": "5.5.2", "source-map-loader": "0.2.3", "webpack-cli": "2.0.13", "zone.js": "0.8.11" }, "devDependencies": { "@angular-devkit/build-optimizer": "0.5.6", "@angular/cli": "1.7.2", "@angular/compiler-cli": "5.2.9", "@skatejs/ssr": "0.19.1", "@types/jasmine": "2.5.36", "@types/jest": "22.1.3", "@types/node": "6.0.73", "add-stream": "1.0.0", "babel-core": "6.26.0", "babel-loader": "7.1.2", "babel-plugin-root-import": "5.1.0", "babel-plugin-transform-es2015-modules-commonjs": "6.26.0", "babel-plugin-transform-react-jsx": "6.24.1", "babel-preset-env": "1.6.1", "babel-preset-es2015": "6.24.1", "babel-preset-stage-3": "6.24.1", "circular-dependency-plugin": "5.0.2", "codelyzer": "3.1.2", "copy-webpack-plugin": "4.5.1", "css-loader": "0.28.4", "eslint": "4.15.0", "eslint-plugin-angular": "3.1.1", "extract-text-webpack-plugin": "4.0.0-beta.0", "file-loader": "1.1.11", "gulp": "3.9.1", "gulp-angular-templatecache": "2.0.0", "gulp-concat": "2.6.1", "html-loader": "0.5.5", "html-webpack-plugin": "3.0.7", "husky": "0.14.3", "jasmine-marbles": "0.2.0", "jasmine-spec-reporter": "4.1.1", "jest": "21.2.1", "jest-preset-angular": "4.0.1", "jest-sonar-reporter": "1.3.0", "license-webpack-plugin": "1.3.1", "lodash": "4.17.4", "node-sass": "4.8.3", "npm-run-all": "4.1.2", "null-loader": "0.1.1", "postcss-loader": "2.1.3", "postcss-url": "7.3.2", "promise.prototype.finally": "3.0.0", "protractor": "4.0.14", "raw-loader": "0.5.1", "rimraf": "2.6.1", "sass-loader": "6.0.6", "script-loader": "0.7.2", "smart-banner-webpack-plugin": "3.0.1", "style-loader": "0.13.2", "ts-node": "3.0.6", "tslint": "5.4.3", "typescript": "2.4.2", "uglifyjs-webpack-plugin": "1.2.4", "webpack": "4.4.1", "webpack-dev-server": "3.1.1", "write-file-webpack-plugin": "4.2.0" }, "repository": {}, "jestSonar": { "reportPath": "coverage", "reportFile": "unit-tests.xml", "indent": 4 } } 

I appreciate any and all help. 我感谢所有帮助。

Looking over the ngx-mask library, it seems like you forgot to import the library using the forRoot() version to set up the config provider that the MaskService needs. 查看ngx-mask库,似乎您忘记了使用forRoot()版本导入该库来设置MaskService所需的config提供程序。 Adding this to your AppModule should solve it (according to the library's documentation ): 将其添加到您的AppModule应该可以解决它(根据库的文档 ):

import {NgxMaskModule} from 'ngx-mask';

@NgModule({
  (...)
  imports: [
    NgxMaskModule.forRoot(options)
  ]
  (...)
})

Note: The options parameter is optional. 注意: options参数是可选的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 得到“NullInjectorError:InjectionToken okta.config.angular 没有提供者!” 同时升级到 angular8 到 angular10 - getting "NullInjectorError: No provider for InjectionToken okta.config.angular!" while upgrading to angular8 to angular10 从角度4升级到角度5后的Webpack错误 - Webpack error after upgrading from angular 4 to angular 5 Webpack升级到Angular后报错10 - Webpack error after upgrading to Angular 10 升级到angular 5后,webpack命令失败 - After upgrading to angular 5 webpack command is failing angular 业力 - NullInjectorError:没有 InjectionToken 配置的提供者 - angular karma - NullInjectorError: No provider for InjectionToken config Quill Angular 错误:NullInjectorError: No provider for InjectionToken config - Quill Angular Error: NullInjectorError: No provider for InjectionToken config 在我的Angular项目上升级到ngrx v8后,如何修复“NullInjectorError:没有ProviderToken @ ngrx /路由器存储配置的提供商!”? - How do I fix “ NullInjectorError: No provider for InjectionToken @ngrx/router-store Configuration!” after upgrading to ngrx v8 on my Angular project? 单个webpack配置中的多角度应用程序 - multiple angular application in single webpack config Angular InjectionToken 抛出“没有 InjectionToken 提供者” - Angular InjectionToken throws 'No provider for InjectionToken' MSAL Angular - NullInjectorError:没有提供 InjectionToken MSAL_CONFIG - MSAL Angular - NullInjectorError: No provider for InjectionToken MSAL_CONFIG
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM