3

我刚刚将 angular 2 从 beta 9 更新到 beta 11(或 beta 10),现在我在控制台中收到了这个错误:Uncaught TypeError: Cannot read property 'zone' of undefinedangular2-polyfills.js:142没有更改任何代码的情况下。

控制台报告错误的行angular2-polyfills.js:142是:

task.zone.cancelTask(task);

我正在使用普通的js。

在 index.html 中,我包含了这 4 个 js 文件:

<script src="libs/es6-shim/es6-shim.min.js"></script>
<script src="libs/angular/2.0.0-beta.11/angular2-polyfills.js"></script>
<script src="libs/angular/2.0.0-beta.11/Rx.umd.js"></script>
<script src="libs/angular/2.0.0-beta.11/angular2-all.umd.js"></script>

我使用的所有 ngZone 相关代码都是为了使类的方法可以从外部 js 访问。

window.PushService = {
            onCallFromOutside: this.onCallFromOutside.bind(this),
            zone: _ngZone
        };

此外,我尝试评论我使用 ngZone 的所有代码,但错误仍然存​​在。

与什么相关以及如何解决此错误?

4

5 回答 5

4

beta11 上似乎有一些关于 Zones 的问题。请参阅 angular.io 网站 ( https://angular.io/docs/ts/latest/ ) 上的消息:

当前的 beta.11 版本存在与区域子系统重大更改相关的已知错误。所有应用都会向控制台报错:

Uncaught TypeError: Cannot read property 'zone' of undefined

该应用程序将畅通无阻地运行,但令人不安。我们希望通过 beta.12 修复这个和其他错误。谢谢你的耐心。

于 2016-03-21T14:36:06.043 回答
2

我可以确认在 2.0.0-beta.12 中问题已解决。

于 2016-03-29T16:29:22.943 回答
2

我将 lite-server 更改为 live-server 并且错误消失了。此外,应用上的 lite-server 更新不会导致页面刷新,live-server 页面会自动刷新。

于 2016-03-23T07:39:55.967 回答
1

一旦你更新到 angular2@2.0.0-beta.12,确保你已经更新了你的 zone.js@^0.6.6,我可以确认,一旦你更新了这些依赖,zone.js 错误就会消失。希望这会有所帮助!

于 2016-03-29T21:42:55.447 回答
1

至于我(我正在使用最新的 Angular CLI)在帮助
中引入区域main.ts

import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

// here
import 'zone.js/dist/zone';

import 'rxjs/add/operator/map'

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);
于 2017-05-24T06:13:35.810 回答