【问题标题】:Uncaught ReferenceError: Zone is not defined (Jasmine)Uncaught ReferenceError: Zone is not defined (Jasmine)
【发布时间】:2019-12-31 11:26:38
【问题描述】:

我正在为 Angular 项目执行单元测试,但出现错误

'Uncaught ReferenceError: Zone is not defined'

在茉莉花和业力。目前我使用角度 6。

"jasmine-core": "~2.99.1",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~1.7.1",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.0",
    "karma-jasmine": "~1.1.1",
    "karma-jasmine-html-reporter": "^0.2.2",
    "typescript": "2.7.2",

未捕获的 ReferenceError:未定义区域 在:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:85 在:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:9 在对象。 (:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:12) 在 Object../node_modules/zone.js/dist/zone-testing.js (zone-testing.js:1584) 在 webpack_require (:9876/_karma_webpack_/webpack:/webpack/bootstrap:76) 在 Object../src/test.ts (:9876/_karma_webpack_/webpack:/src/test.ts:3) 在 webpack_require (:9876/_karma_webpack_/webpack:/webpack/bootstrap:76) 在 checkDeferredModules (:9876/_karma_webpack_/webpack:/webpack/bootstrap:43) 在:9876/_karma_webpack_/webpack:/webpack/bootstrap:134 在引导:134

【问题讨论】:

    标签: jasmine angular6 karma-jasmine


    【解决方案1】:

    我在 Angular 9 中遇到了同样的问题。

    我在“test.ts”文件中添加了一些导入和一个用于窗口的 polyfill。在完整文件下方。

    // This file is required by karma.conf.js and loads recursively all the .spec and framework files
    
    import 'zone.js/dist/zone';
    import 'zone.js/dist/long-stack-trace-zone';
    import 'zone.js/dist/proxy';
    import 'zone.js/dist/sync-test';
    import 'zone.js/dist/jasmine-patch';
    import 'zone.js/dist/async-test';
    import 'zone.js/dist/fake-async-test';
    import 'zone.js/dist/zone-testing';
    import { getTestBed } from '@angular/core/testing';
    import {
      BrowserDynamicTestingModule,
      platformBrowserDynamicTesting
    } from '@angular/platform-browser-dynamic/testing';
    
    (window as any).global = window;
    
    declare const require: {
      context(path: string, deep?: boolean, filter?: RegExp): {
        keys(): string[];
        <T>(id: string): T;
      };
    };
    
    // First, initialize the Angular testing environment.
    getTestBed().initTestEnvironment(
      BrowserDynamicTestingModule,
      platformBrowserDynamicTesting()
    );
    // Then we find all the tests.
    const context = require.context('./', true, /\.spec\.ts$/);
    // And load the modules.
    context.keys().map(context);
    

    【讨论】:

    • 只需在test.ts 文件的顶部添加import 'zone.js/dist/zone'; 就足以为我修复它。
    【解决方案2】:

    我不知道这是否仍然是一个问题,但如果一切正常但仍然无法正常工作,请在 karma.conf.js 文件中尝试以下操作:

    config.set({... files: ['node_modules/zone.js/dist/zone.js'] });

    有关更多信息,请参阅此链接: Link

    【讨论】:

      【解决方案3】:

      通过下面的链接,它会对你有所帮助。

      https://github.com/angular/zone.js/issues/776

      module.exports = function (config) {
      config.set({
      basePath: '../',
      frameworks: ['jasmine', '@angular/cli'],
      plugins: [
      require('karma-jasmine'),
      require('karma-chrome-launcher'),
      require('karma-jasmine-html-reporter'),
      require('karma-coverage-istanbul-reporter'),
      require('@angular/cli/plugins/karma')
      ],
      

      【讨论】:

      • 您好 pktechie,感谢您的回复。我尝试了相同但仍然相同的错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2019-01-22
      • 2020-05-24
      • 2020-05-10
      相关资源
      最近更新 更多