Angular2的简单运行抛出一个错误与es6-promise.Promise

我试图运行Angular 2 Alpha 45(' https://code.angularjs.org/2.0.0-alpha.45/angular2.dev.js '),但它在“es6Promise._setAsap”失败,说es6Promise是未定义。

var es6Promise = require('es6-promise').Promise; // es6-promise asap should schedule microtasks via zone.scheduleMicrotask so that any // user defined hooks are triggered es6Promise._setAsap(function(fn, arg) { global.zone.scheduleMicrotask(function() { fn(arg); }); }); 

当前页面是:

 <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <script src="javascripts/system.js"></script> <script> System.config({ map: { 'es6-shim':'javascripts/es6-shim.js', 'angular2/angular2': 'javascripts/lib/angular2.alpha.45.dev.js' } }); System.import('es6-shim').then(function(){ System.import('javascripts/app.js'); }); </script> </head> <body> <my-app>Loading...</my-app> </body> </html> 

app.js包含示例文件的转换,其中包含:

 import {Component, bootstrap} from 'angular2/angular2'; @Component({ selector: 'my-app', template: '<h1>My First Angular 2 App b</h1>' }) class AppComponent { } bootstrap(AppComponent); 

问题是:为什么require('es-promise')返回一个空对象? 我正在使用app.js的简单的打字输出,除了angular.io谈到的systemjs以外没有其他任何东西。

我想我错过了一些东西,也许ES6垫片或另一个版本的浏览器angular2?

经过另外一个小时的search,显然 – 我不知道为什么在当前的Angular文档中没有清楚的说明 – SystemJsconfiguration存在一个问题

它缺lessangular2在其脚本中使用特定格式的事实,并且必须明确地设置它。

HTML代码中的最终脚本如下所示:

 <script src="javascripts/system-polyfills.js"></script> <script src="javascripts/system.js"></script> <script> System.config({ paths:{"*":"../*.js"}, map: { 'angular2/angular2': 'javascripts/lib/angular2.dev', 'crypto':'javascripts/crypto' }, meta: { 'angular2/angular2':{ format: 'register' } } }); System.import('javascripts/app'); </script> 

附加信息:

  • 我认为angular.io的信息是用于SystemJs的老版本(也许是16,因为它和我在这里使用的19不一样),我以为CommonJS是在Angular中使用的,但是SystemJs告诫我说:在代码中的“System.register”之类的东西,所以我把格式改成了“register”(兼容模块格式)。
  • 如果您希望在旧版浏览器上运行,请不要忘记添加系统pollyfill