簡體   English   中英

錯誤:StaticInjectorError(DynamicTestModule)[RouterLinkWithHref -> Router]:(NullInjectorError:沒有路由器的提供者!)

[英]Error: StaticInjectorError(DynamicTestModule)[RouterLinkWithHref -> Router]: (NullInjectorError: No provider for Router!)

我正在為 AppComponent 准備單元測試用例,它有路由器作為注入的依賴項,並在我的測試台中包含了 RouterTestingModule。 但仍然收到一個奇怪的錯誤。 請找到如下所示的錯誤日志:

Error: StaticInjectorError(DynamicTestModule)[RouterLinkWithHref -> Router]: 
  StaticInjectorError(Platform: core)[RouterLinkWithHref -> Router]: 
    NullInjectorError: No provider for Router!

錯誤屬性:對象({ ngTempTokenPath:null,ngTokenPath:['RouterLinkWithHref',Function],ngDebugContext:DebugContext_({視圖:對象({ def:對象({工廠:函數,nodeFlags:671753,rootNodeFlags:1,nodeMatchedQueries:0 , flags: 0, nodes: [ Object({ nodeIndex: 0, parent: null, renderParent: null, bindingIndex: 0, outputIndex: 0, checkIndex: 0, flags: 1, childFlags: 671753, directChildFlags: 1, childMatchedQueries: 0 ,matchedQueries:Object({}),matchedQueryIds:0,references:Object({}),ngContentIndex:null,childCount:10,bindings:[Object({flags:8,ns:'',name:'className', nonMinifiedName: 'className', securityContext: 0, suffix: undefined }) ], bindingFlags: 8, 輸出: [ ], element: Object({ ns: '', name: 'nav', attrs: [ Array ], template: null, componentProvider: null, componentView: null, componentRendererType: null, publicProviders: null({ }), allProviders: null({ }), handleEvent: Function }), provider: null, text: null, query: null, ngContent:空值 }), Object({ ... Error: StaticInjectorError(DynamicTestModule)[RouterLinkWithHref -> Router]: StaticInjectorError(Platform: core)[RouterLinkWithHref -> Router]: NullInjectorError: No provider for Router! 在 NullInjector.get (webpack:///./node_modules/@angular/core/fesm5/core.js?:1360:19) 在 resolveToken (webpack:///./node_modules/@angular/core/fesm5/core .js?:1598:24) at tryResolveToken (webpack:///./node_modules/@angular/core/fesm5/core.js?:1542:16) at StaticInjector.get (webpack:///./node_modules/ @angular/core/fesm5/core.js?:1439:20) at resolveToken (webpack:///./node_modules/@angular/core/fesm5/core.js?:1598:24) at tryResolveToken (webpack:/ //./node_modules/@angular/core/fesm5/core.js?:1542:16) 在 StaticInjector.get (webpack:///./node_modules/@angular/core/fesm5/core.js?:1439: 20) 在 resolveNgModuleDep (webpack:///./node_modules/@angular/core/fesm5/core.js?:8667:29) 在 NgModuleRef_.get (webpack:///./node_modules/@angular/core/fesm5 /core.js?:9355:16) 在 resolveDep (webpack:///./node_modules/@angular/core/fesm5/core.js?:9720:45)

請幫忙。 我已經嘗試從我的模板中刪除路由器鏈接。

TestBed.configureTestingModule({
    declarations: [
      AppComponent
    ],
    imports: [
      CoreModule.forRoot(),
      RouterTestingModule.withRoutes(routes),
    ],
    providers: [
      {provide: APP_BASE_HREF, useValue: '/'},
    ]
}

我可以知道您是否導入了RouterTestingModule嗎? 你應該這樣導入:

import { RouterTestingModule } from '@angular/router/testing';

此外,什么是routesRouterTestingModule.withRoutes(routes) 以下是如何將 RouterTestingModule 導入測試台的示例。

beforeEach(async(() => {
  TestBed.configureTestingModule({
    imports: [
      HttpClientTestingModule,
      RouterTestingModule.withRoutes([]),
    ],
    declarations: [
      SomeComponent,
    ],
    providers: [
      SampleService,
    ],

  })
    .compileComponents()
}))

我能夠解決這個問題。 在修改測試用例時,我更新了 @types/jasmine 的版本以解決一些問題並更新了一些其他依賴項。 在后台,我的應用程序也因此而崩潰。 因此,我重新分叉了存儲庫,然后僅更新了所需的依賴項。 現在代碼工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM