Migrar proyecto Angular
Migrar un proyecto Angular a la última versión
En el proceso de migración los proyectos de Angular pueden producir avisos y errores. Para ello es necesario actualizar el proyecto una nueva versión, pero en dicha actualización también se pueden producir nuevos errores. Para solucionar estos errores a la hora de actualizar, es necesario comprobar el tipo de error que muestra en pantalla e ir solucionando uno a uno mediante algunos comandos de los que Angular dispone. A continuación se explican los pasos a realizar en una actualización de un proyecto Angular con una versión anterior.
COPIA DE SEGURIDAD
El primer paso para realizar una migración de un proyecto Angular es una copia de seguridad.
ACTUALIZAR PROYECTO ANGULAR
ng update
ERROR DE VERSION
Your global Angular CLI versión (6.0.1) is greater than your local version (1.5.0).
The local Angular CLI version is used.
El código de arriba es un ejemplo de un error común al actualizar con update un proyecto que contiene una versión de Angular CLI anterior, por tanto, es necesario instalar la nueva versión de Angular Cli dentro del proyecto.
INSTALAR ANGULAR CLI
npm install @angular/cli@latest
VOLVER A ACTUALIZAR
Al volver a actualizar con update después de haber instalado la última versión de Angular CLI la consola devuelve información de los distintos paquetes que necesitan ser actualizados incluyendo el comando necesario para ello. Además existe la opción --all que permite actualizar todos los paquetes.
ng update
ACTUALIZAR TODOS LOS PAQUETES
ng update --all
Es posible de que después de actualizar la consola devuelva incompatibilidades en las versiones de los paquetes, por lo que se puede editar el archivo package.json sustituyendo la versión o las versiones manualmente y volver a actualizar con NPM y con Angular.
"dependencies": {
"@angular/animations": "~7.2.0",
"@angular/common": "~7.2.0",
"@angular/compiler": "~7.2.0",
"@angular/core": "~7.2.0",
"@angular/forms": "~7.2.0",
"@angular/platform-browser": "~7.2.0",
"@angular/platform-browser-dynamic": "~7.2.0",
"@angular/router": "~7.2.0",
"angular2-moment": "^1.9.0",
"core-js": "^2.5.4",
"jquery": "1.12",
"rxjs": "~6.3.3",
"rxjs-compat": "^6.5.3",
"tslib": "^1.9.0",
"zone.js": "~0.8.26"
},
El método update de NPM instala las dependencias que hayamos sustituido en el archivo package.json.
npm update
De nuevo se vuelven a actualizar los paquetes.
ng update
Añadiendo las opciones all y force si es necesario
ng update --all --force
ERROR TYPESCRIPT
En ocasiones el error devuelto lo origina la versión de TypeScript, en estos casos es preferible desinstalar typescript, borrar la caché y volver a instalar TypeScript con la versión requerida. TypeScript es recomendable instalarlo como dependencia de desarrollo, para instalar paquetes para desarrollo es necesario el uso de la opción dev.
DESINSTALAR TYPESCRIPT
npm uninstall --save typescript
BORRAR CACHÉ
npm cache clean --force
INSTALAR TYPESCRIPT
npm install --save-dev typescript@3.2.2
ERROR BOOTSTRAP
El paquete de Bootstrap, a diferencia de otros, puede no mostrar ningún error por consola pero al iniciar el proyecto no mostrarse correctamente debido a que Bootstrap desde la versión 4.0 ha eliminado algunas de las propiedades de versiones anteriores. Para ello se realiza la misma operación que TypeScript, se desinstala y se vuelve a instalar la versión requerida.
DESINSTALAR BOOTSTRAP
npm uninstall --save bootstrap
INSTALAR VERSIÓN ESPECÍFICA DE BOOTSTRAP
npm install --save bootstrap@3.3.6
Desde la consola de errores del navegador es posible encontrar errores por versiones distintas de algún paquete instalado.
Bootstrap's Javascript requires jQuery version 1.9.1 or higher, but lower than version 3
La solución, al igual que las anteriores consiste en actualizar el paquete a la versión indicada.
DESINSTALAR PAQUETE
npm uninstall --save jquery
INSTALAR PAQUETE COMPATIBLE
npm install --save jquery@1.9.1
Nota: Revisar si al desinstalar y volver a instalar paquetes es necesario editar el archivo angular.json y modificar la ruta del paquete indicada, ya que de un paquete a otro puede variar la ubicación del archivo en otro subdirectorio.
Para poder comentar es necesario iniciar sesión