angular documentation
¿Dónde está angular2-polyfills ahora que no beta beta Angular 2 está empaquetado como @angular? (3)
Como lo dijo Thierry Templier en su respuesta, el problema es que la zone.js
y reflect-metadata
deben incorporarse ahora que el angular2-polyfills.js
ya no está disponible.
Para recuperar la funcionalidad, debe importarlos directamente en lugar de confiar en el antiguo código de 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
El paquete de reflect-metadata
reflectivos ya tiene tipografías integradas para TypeScript, por lo que puede usar la import
. Sin embargo, Zone.js no lo hace, por lo que debe confiar en require()
para que el paquete web lo recoja e incluya en sus paquetes.
Por supuesto, también debe tener reflejado y zona en la sección de dependencias de package.json
(las mías se enumeran al final, a continuación):
{
"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"
},
}
Una vez hecho esto, deberías tener una aplicación en funcionamiento nuevamente (asumiendo que te ocupaste de los otros problemas involucrados en pasar de Angular2 beta al código RC (candidato candidato).
Este código es una muestra de mi proyecto angular2-bootstrap4-oauth2-webpack en Github.
Ahora que Angular2 está fuera de beta (2.0.0-RC.0 y RC.1 salieron ayer / 3 de mayo de 2016), todo Angular 2 está empaquetado para su uso con NPM bajo el nuevo espacio de nombres de @angular. Muchos paquetes se han movido y se deben instalar individualmente ahora, como se puede ver en Angular2 CHANGELOG .
Pero una cosa que CHANGELOG no aborda es cómo encontrar el angular2-polyfills
que estaba disponible anteriormente.
Mi código beta lo llamó en uno de sus archivos de TypeScript:
import ''angular2/bundles/angular2-polyfills'';
¿Qué debo hacer ahora para obtener la misma funcionalidad con el nuevo diseño del paquete?
Aquí está el archivo ventdor.ts
que solía importar los rellenos de plástico para que pudiera incluirse en el paquete web:
require(''./css/bootstrap.css'');
require(''./css/main.css'');
import ''angular2/bundles/angular2-polyfills''; // THIS NO LONGER WORKS
require(''./lib/bootstrap/bootstrap.js'');
La falta de polyfills provoca errores como los siguientes cuando compilo mi aplicación con webpack:
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''.
Hace poco tuve este problema con rc.5 y lo resolví importando la zona así:
// import ''angular2/bundles/angular2-polyfills''; // old
import ''reflect-metadata'';
import ''zone.js/dist/zone'';
import ''zone.js/dist/long-stack-trace-zone'';
No hay más archivo angular2-polyfills.js
. Debe incluir explícitamente las bibliotecas ZoneJS y los metadatos de reflexión (FYI angular2-polyfill contenía estas dos bibliotecas), por lo que debe incluir lo siguiente:
<script src="node_modules/zone.js/dist/zone.js"></script>
<script src="node_modules/reflect-metadata/Reflect.js"></script>