Ответ 1
Как сказал Тьерри Темплер в своем ответе, проблема в том, что 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
Пакет 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"
},
}
Как только это будет сделано, вы снова получите рабочее приложение (при условии, что вы позаботились о других проблемах, связанных с переходом от Angular2 бета к коду RC (релиз-кандидат).
Этот код является образцом моего проекта angular2-bootstrap4-oauth2-webpack на Github.