【问题标题】:Cannot access 'NgbNavLink' before initialization初始化前无法访问“NgbNavLink”
【发布时间】:2022-01-04 17:41:00
【问题描述】:

我正在尝试使用 JestAngular 13 中测试包含来自 ng-bootstrap 的组件的组件,并收到以下错误: Cannot access 'NgbNavLink' before initialization.

我有一个使用 NgbModal 的组件 MyComponent。我只想为这个组件创建测试,所以我需要在我的测试中导入 NgbModule。但是,导入似乎不起作用,因为我收到以下错误:

 FAIL  src/app/pages/kafkaconnect/kafkaconnect.component.spec.ts
  ● Test suite failed to run

    ReferenceError: Cannot access 'NgbNavLink' before initialization

      2 |
      3 | import { MyComponent } from './mycomponent.component';
    > 4 | import { NgbModule } from "@ng-bootstrap/ng-bootstrap";
        | ^

      at Object.<anonymous> (node_modules/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.mjs:6651:991)
      at Object.<anonymous> (src/app/pages/kafkaconnect/kafkaconnect.component.spec.ts:4:1)

这是我的测试类:

import { ComponentFixture, TestBed } from '@angular/core/testing';

import { MyComponent } from './mycomponent.component';
import { NgbModule } from "@ng-bootstrap/ng-bootstrap";

describe('MyComponent', () => {
  let component: MyComponent;
  let fixture: ComponentFixture<MyComponent>;

  beforeEach(async () => {
    await TestBed.configureTestingModule({
      declarations: [ MyComponent ],
      imports: [ NgbModule ],
    })
    .compileComponents();
  });

  beforeEach(() => {
    fixture = TestBed.createComponent(MyComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

我正在使用 Angular 13ng-bootstrap 11.0.0-rc.0bootstrap 4.6.1。我知道这些版本是最新的,但我在服务或构建我的应用程序时没有收到任何错误。

Angular CLI: 13.0.3
Node: 16.13.0
Package Manager: npm 8.1.0
OS: win32 x64

Angular: 13.0.2
... animations, common, compiler, compiler-cli, core, forms
... localize, platform-browser, platform-browser-dynamic, router

Package                         Version
---------------------------------------------------------
@angular-devkit/architect       0.1300.3
@angular-devkit/build-angular   13.0.3
@angular-devkit/core            13.0.3
@angular-devkit/schematics      13.0.3
@angular/cli                    13.0.3
@schematics/angular             13.0.3
rxjs                            6.6.7
typescript                      4.4.4

最后,我使用的是 jest 27.3.1。当我使用 Angular 时,我在 this documentation 之后配置了 jest-preset-angular

关于我为什么会收到此错误的任何线索?

【问题讨论】:

    标签: angular typescript jestjs ng-bootstrap angular13


    【解决方案1】:

    问题似乎出在 ng-bootstrap 11.0.0-rc.0 上。升级到 ng-bootstrap 12.0.0-beta.4 解决了这个问题。

    【讨论】:

    • 遗憾的是,版本 12 附带了 bootstrap 5,其中有很多重大更改。版本 11(引导程序 4)是否有任何修复?
    • 嗨@coaxial!根据我在文档中看到的,版本 12 支持 bootstrap 4。事实上,我将我的 bootstrap 版本留给了 bootstrap 4,并没有发现任何问题。
    • 谢谢@Gaetitan。我试图自己解决这个错误,没有意识到这只是 ng-bootstrap 的版本问题。更新并修复了我在 GitHub Actions 上的测试失败并出现此错误。
    猜你喜欢
    • 2020-08-25
    • 2020-09-08
    • 2021-09-29
    • 2019-10-12
    • 2020-11-30
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多