Mic*_*ryl 24 typescript angular
现在Angular2已经完成测试版(2.0.0-RC.0和RC.1于昨天/ 2016年5月3日发布),所有Angular 2都打包用于新的@angular命名空间下的NPM.很多软件包已被移动,现在必须单独安装,正如你在Angular2 CHANGELOG中看到的那样.
但是,CHANGELOG没有解决的一件事是如何找到angular2-polyfills以前可用的捆绑包.
我的beta代码在其中一个TypeScript文件中调用了它:
import 'angular2/bundles/angular2-polyfills';
Run Code Online (Sandbox Code Playgroud)
现在我需要做什么才能使用新的包布局获得相同的功能?
这是ventdor.ts用于导入polyfill 的文件,以便webpack可以包含它:
require('./css/bootstrap.css');
require('./css/main.css');
import 'angular2/bundles/angular2-polyfills'; // THIS NO LONGER WORKS
require('./lib/bootstrap/bootstrap.js');
Run Code Online (Sandbox Code Playgroud)
当我使用webpack构建应用程序时,缺少polyfill导致如下错误:
ERROR in /Users/mfo/Projects/PennMutual/angular2-oauth2/node_modules/@angular/core/src/facade/async.d.ts
(28,45): error TS2304: Cannot find name 'Promise'.
ERROR in /Users/mfo/Projects/PennMutual/angular2-oauth2/node_modules/@angular/core/src/facade/lang.d.ts
(4,17): error TS2304: Cannot find name 'Map'.
ERROR in /Users/mfo/Projects/PennMutual/angular2-oauth2/node_modules/@angular/core/src/facade/lang.d.ts
(5,17): error TS2304: Cannot find name 'Set'.
Run Code Online (Sandbox Code Playgroud)
Mic*_*ryl 14
正如亨利TEMPLIER他回答说,这个问题是zone.js和reflect-metadata在现在的被带angular2-polyfills.js束不再可用.
要恢复功能,您需要直接导入它们,而不是依赖旧的polyfills代码.
//import 'angular2/bundles/angular2-polyfills'; // no longer available
import 'reflect-metadata';
require('zone.js/dist/zone');
require('zone.js/dist/long-stack-trace-zone'); // for development only - not needed for prod deployment
Run Code Online (Sandbox Code Playgroud)
该reflect-metadata软件包已经具有TypeScript的内置类型,因此您可以使用import.但是,Zone.js不是这样,所以你需要依靠require()webpack来获取它并将其包含在你的捆绑包中.
当然,您还需要在您的package.json依赖项部分中有反射和区域(我的列表在下面的末尾):
{
"name": "angular2-bootstrap4-oauth2-ohmy",
"version": "1.0.8",
"description": "A skeleton Angular2, Bootstrap 4, OAuth2 application using webpack (oh my!)",
"repository": "https://github.com/michaeloryl/angular2-bootstrap4-oauth2-webpack.git",
"dependencies": {
"@angular/common": "^2.0.0-rc.1",
"@angular/compiler": "^2.0.0-rc.1",
"@angular/core": "^2.0.0-rc.1",
"@angular/http": "^2.0.0-rc.1",
"@angular/platform-browser": "^2.0.0-rc.1",
"@angular/platform-browser-dynamic": "^2.0.0-rc.1",
"@angular/router": "^2.0.0-rc.1",
"@angular/router-deprecated": "^2.0.0-rc.1",
"bootstrap": "4.0.0-alpha.2",
"es6-promise": "^3.0.2",
"es6-shim": "^0.35.0",
"jquery": "^2.1.4",
"js-cookie": "^2.1.0",
"lodash": "^4.11.2",
"phantomjs-prebuilt": "^2.1.7",
"require": "^2.4.20",
"rxjs": "^5.0.0-beta.6",
"traceur": "0.0.93",
"reflect-metadata": "^0.1.2",
"zone.js": "^0.6.12"
},
}
Run Code Online (Sandbox Code Playgroud)
完成后,您应该再次使用一个有效的应用程序(假设您已经处理了从Angular2 beta迁移到RC(候选版本)代码所涉及的其他问题.
此代码是来自Github上的angular2-bootstrap4-oauth2-webpack项目的示例.
没有更多angular2-polyfills.js文件.您需要明确包含ZoneJS和Reflect Metadata库(FYI angular2-polyfill包含这两个库)因此您需要包含以下内容:
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14779 次 |
| 最近记录: |