【问题标题】:Error running Jest tests after upgrading to Angular 9: TypeError: Cannot read property 'ngModule' of undefined升级到 Angular 9 后运行 Jest 测试时出错:TypeError: Cannot read property 'ngModule' of undefined
【发布时间】:2020-07-21 04:08:23
【问题描述】:

我从 Angular 8.2 升级到 Angular 9。我的项目按预期运行,构建也是如此,但是许多测试都因此错误而失败:

TypeError: Cannot read property 'ngModule' of undefined

  at isModuleWithProviders (../packages/core/src/render3/jit/module.ts:530:37)
  at expandModuleWithProviders (../packages/core/src/render3/jit/module.ts:523:7)
      at Array.map (<anonymous>)
  at Function.get (../packages/core/src/render3/jit/module.ts:127:29)
  at getNgModuleDef (../packages/core/src/render3/definition.ts:761:27)
  at isNgModule (../packages/core/src/render3/jit/module.ts:534:12)
  at ../packages/core/src/render3/jit/module.ts:464:10
      at Array.forEach (<anonymous>)
  at transitiveScopesFor (../packages/core/src/render3/jit/module.ts:458:30)
  at setScopeOnDeclaredComponents (../packages/core/src/render3/jit/module.ts:388:28)
  at Object.flushModuleScopingQueueAsMuchAsPossible [as ɵflushModuleScopingQueueAsMuchAsPossible] (../packages/core/src/render3/jit/module.ts:59:11)
  at TestBedRender3.flushModuleScopingQueueAsMuchAsPossible [as checkGlobalCompilationFinished] (../../packages/core/testing/src/r3_test_bed.ts:400:7)
  at TestBedRender3.Object.<anonymous>.TestBedRender3.resetTestingModule (../../packages/core/testing/src/r3_test_bed.ts:231:10)
  at Function.Object.<anonymous>.TestBedRender3.resetTestingModule (../../packages/core/testing/src/r3_test_bed.ts:180:26)
  at ../../packages/core/testing/src/before_each.ts:25:13
  at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:386:30)
  at ProxyZoneSpec.Object.<anonymous>.ProxyZoneSpec.onInvoke (node_modules/zone.js/dist/proxy.js:117:43)
  at ZoneDelegate.Object.<anonymous>.ZoneDelegate.invoke (node_modules/zone.js/dist/zone.js:385:36)
  at Zone.Object.<anonymous>.Zone.run (node_modules/zone.js/dist/zone.js:143:47)

这是一个非常简单但失败的测试示例:

import { ExampleModule } from './example.module';

describe('ExampleModule', () => {
   let exampleModule: ExampleModule;

  beforeEach(() => {
    exampleModule = new ExampleModule();
  });

  it('should create an instance', () => {
    expect(exampleModule).toBeTruthy();
  });
});

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: angular jestjs angular9


    【解决方案1】:

    这最终成为桶装进口的问题。为了解决这个问题,我必须删除所有桶导入并深度导入所有文件。

    老例子:

    import {
      Example1,
      Example2
    } from 'path/to/example-folder';
    

    新建示例:

    import { Example1 } from 'path/to/example1-file';
    import { Example2 } from 'path/to/example2-file';
    

    【讨论】:

      猜你喜欢
      • 2022-01-23
      • 2019-12-15
      • 1970-01-01
      • 2021-06-25
      • 2021-09-10
      • 1970-01-01
      • 2020-09-04
      • 2019-08-25
      • 2018-11-01
      相关资源
      最近更新 更多