Tengo una aplicación Angular (2) configurada con un paquete web que importa módulos de otro repositorio común.
Entonces, el repositorio común tiene un archivo common.module.ts con algo como esto:
@NgModule({ imports: [...], declarations: [...], providers: [...], exports: [...] }) export class CommonModule {}y luego en mi aplicación principal estoy importando esto en mi app.module.ts
@NgModule({ imports: [ ... CommonModule, ], declarations: [...], providers: [...], bootstrap: [AppComponent] }) export class AppModule { }Esto funciona bien tal como está en Angular2, pero luego estoy tratando de migrar a Angular 4.0 en mi proyecto principal (sin tocar el repositorio común, ya que lo usan otros repositorios que tampoco se migran). Así que cambio mis versiones en mi paquete.json y reconstruyo y todo parece estar bien, pero luego cuando cargo la aplicación en el navegador obtengo esto
Error no detectado: valor inesperado 'CommonModule' importado por el módulo 'AppModule'. Agregue una anotación @NgModule.
¿Alguien sabe lo que está pasando? el CommonModule ya está declarado usando @NgModule. Revisé node_modules en caso de que haya algún problema con los archivos importados y encontré common_module.d.ts que contiene
... export declare class CommonModule {}pero eso para mí está bien, ese es el archivo de barril y el decorador se ha quitado de aquí.
¿Algunas ideas?
Ok, finalmente obtuve ayuda en Angular github para que funcione.
Entonces, lo que tuve que hacer fue cambiar las dependencias en mi proyecto común para usar cualquier biblioteca angular> = 2.0.0, como esta
"dependencies": { "@angular/core": ">=2.0.0", "@angular/common": ">=2.0.0", "@angular/router": ">=3.0.0", "@angular/http": ">=2.0.0", "@angular/platform-browser": ">=2.0.0", Ejecuto yarn para actualizar las dependencias y luego envío los cambios a mi repositorio de github.
Una vez en mi proyecto de aplicación, actualicé mi biblioteca común ejecutando yarn upgrade my_github_repo/common#feature/angular4 (feature/angular4 es el nombre de la rama en mi proyecto común donde impulsé los cambios)
y eso es todo, de esta manera solo hay una biblioteca angular en mi proyecto, 4.0.0, que es la que usa mi aplicación.
Probé esto con otra aplicación con Angular 2.0.0 que también usa la biblioteca común y, en este caso, la versión de angular en mi node_modules es 2.0.0, así que todo bien.