Versión de CLI angular global mayor que la versión local

354

Cuando ejecuto ng serve, recibo esta advertencia acerca de que mi versión de CLI global es mayor que mi versión local. No noto ningún problema con esta advertencia, pero me preguntaba si las dos versiones deberían estar sincronizadas. Además, ¿es necesario tener una versión local si tiene una versión global?

La advertencia:

Su versión global de CLI angular (1.1.1) es mayor que su versión local (1.0.6). Se utiliza la versión local de CLI angular.

Rico
fuente
43
¿Alguien puede responder por qué necesitamos tanto local como global?
Rap

Respuestas:

465

Para responder una de las preguntas, es necesario tener una instalación global y local para que las herramientas funcionen.

Si intenta ejecutar ng serveuna aplicación sin la instalación local de la CLI (solo instalación global), obtendrá el siguiente error.

Debe estar dentro de un proyecto de CLI angular para utilizar el comando de servicio.

También imprimirá este mensaje:

Please take the following steps to avoid issues:
"npm install --save-dev @angular/cli@latest"

Ejecute ese npmcomando para actualizar la CLI localmente y evite la advertencia que está recibiendo.

Otra pregunta: Parece que no tienen que estar sincronizados, pero probablemente sea mejor que lo estén para evitar cualquier comportamiento inusual con la herramienta, o cualquier inconsistencia con el código que genera la herramienta.

¿Por qué necesitamos tanto la instalación global como una instalación local?

La instalación global es necesaria para iniciar una nueva aplicación. El ng new <app-name>comando se ejecuta utilizando la instalación global de la CLI. De hecho, si intenta ejecutar ng newmientras está dentro de la estructura de carpetas de una aplicación CLI existente, obtendrá este error encantador:

No puede usar el newcomando dentro de un proyecto CLI angular.

Otros comandos que se pueden ejecutar desde la instalación global son ng help, ng get/setcon la --globalopción de, ng version, ng doc, y ng completion.

La instalación local de la CLI se usa después de que se haya creado una aplicación. De esta manera, cuando hay nuevas versiones de la CLI disponibles, puede actualizar su instalación global y no afectar la instalación local. Esto es bueno para la estabilidad de un proyecto. La mayoría de los ngcomandos solo tienen sentido con la versión local, como lint, buildy serve, etc.

Según el archivo Léame de CLI GitHub , para actualizar la CLI debe actualizar el paquete global y local. Sin embargo, he usado la CLI donde las versiones global y local varían sin ningún problema hasta ahora. Si alguna vez me encuentro con un error relacionado con tener las versiones de CLI global y local fuera de sincronización, lo publicaré aquí.

R. Richards
fuente
no hay forma de actualizar el cli, por ejemplo, quiero ejecutar la instalación de módulos con mi versión cli existente. ¿o no hay forma de forzar al ejecutar el comando para usar el cli local, no el global?
Mohammed Yassine CHABLI
3
La versión local de la CLI se usa de forma predeterminada cuando se ejecutan comandos en un directorio de proyecto de la CLI. Lo dice tanto en la advertencia.
R. Richards
pero no sé por qué esta solución no me funciona. ¿Qué pasa si menciono en mi package.json como valor de mi angular-cli = "^ 1.0.6". ese trabajo pero aún no entiendo lo que pasa?
Mohammed Yassine CHABLI
1
npm uninstall -g @ angular / cli, npm cache clear --force, npm install @ angular / cli
Hesham Yassin
1
@ Douglas Eso es correcto. Recibirá una advertencia cuando ejecute esos comandos para un proyecto con una versión inferior de la CLI, pero puede ignorarlo. Todo lo que dice la advertencia es que las versiones son diferentes y se usará la CLI local.
R. Richards
153

Así es como resolví el problema.

Instale el último paquete de CLI angular localmente

Copia y ejecuta estos comandos

ng --version
npm install --save-dev @angular/cli@latest
ng --version
BehrouzMoslem
fuente
1
Yo añadiría que el paso 1.5 (si se quiere) es: rm node_modules/.bin/ng. Funcionó a la perfección.
bretón
42

Esto funciona para mí: actualizará la versión local a la última

npm uninstall --save-dev angular-cli
npm install --save-dev @angular/cli@latest
npm install

para verificar la versión

  ng --version
hoogw
fuente
Lo convertí en un comando por lotes Windoze de old-skool: CALL npm desinstalar --save-dev @ angular / cli CALL npm install --save-dev @ angular / cli @ última CALL npm install CALL ng --version
Lee H
1
Hiciste tus pasos. Probé ng serve --openy obtuve "Esta versión de CLI solo es compatible con Angular versión 5.0.0 o superior. Visite el siguiente enlace para encontrar instrucciones sobre cómo actualizar Angular. Angular-update-guide.firebaseapp.com "
Aggie Jon de 87
17
npm uninstall -g @angular/cli
npm cache verify
npm install -g @angular/cli@latest

Luego, en su paquete de proyecto local:

rm -rf node_modules dist 
npm install --save-dev @angular/cli@latest
npm i 
ng update @angular/cli 
ng update @angular/core
npm install --save-dev @angular-devkit/build-angular

Se estaba obteniendo el error siguiente Error: Fin inesperado de la entrada JSON Fin inesperado de la entrada JSON Los pasos anteriores ayudados desde esta publicación no se pueden actualizar angular a la versión 6

Saurabh
fuente
1
npm install --save-dev @ angular-devkit / build-angular - ayudó a ng update @ angular / cli -> creó angular.json y otras actualizaciones.
MPV
15
npm uninstall --save-dev angular-cli
npm install --save-dev @angular/cli@latest

Su configuración existente se puede actualizar automáticamente ejecutando el siguiente comando:

ng update @angular/cli

o:

npm install
Montasir Mirghani
fuente
8

En mi caso, acabo de usar este comando en el proyecto:

ng update @angular/cli
Akostha
fuente
4

Ejecute el siguiente comando: npm install --save-dev @angular/cli@latest

Después de ejecutar el comando anterior, la consola puede mostrar el siguiente mensaje

El formato de configuración de CLI angular ha cambiado, y su configuración existente se puede actualizar automáticamente ejecutando el siguiente comando: ng update @ angular / cli

Tahir77667
fuente
4

No soy fluido en Inglés

pero si entiendo el problema, ¿es que localmente en el proyecto tiene una versión anterior de CLI que globalmente?

¿Y le gustaría utilizar este global más nuevo en lugar del local más antiguo?

Si es así, un método muy simple es suficiente para ejecutarse en el directorio del proyecto npm link @angular/cli

más en el tema de la página: https://docs.npmjs.com/cli/link

CisSasGot
fuente
2

Primero descubra la versión global angular-cli ejecutando

ng --version

El código anterior mostrará qué versión son las versiones global y local angular-cli.

Si desea que el cli angular global y local sea el mismo, simplemente puede hacer

npm install --save-dev @angular/[email protected]

donde 1.7.4 es su versión global angular-cli

Entonces, si ejecuta ng serve --opensu código debería ejecutarse.

vikas etagi
fuente
2

Solo necesita actualizar AngularCli

npm install --save-dev @angular/cli@latest

fuente
0

Actualizar CLI angular para un espacio de trabajo (local)

npm install --save -dev @angular/cli@latest

Nota: Asegúrese de instalar la versión global utilizando el comando con '-g' si está instalado correctamente.

npm install -g @angular/cli@latest

Ejecute el comando Actualizar para obtener una lista de todas las dependencias necesarias para actualizar

ng update

Siguiente Ejecute el comando de actualización como se muestra a continuación para cada paquete de núcleo angular individual

ng update @angular/cli @angular/core

Sin embargo, tuve que agregar el comando de banderas '–force' y '–allow-dirty' adicionalmente para solucionar todos los demás problemas pendientes.

ng update @angular/cli @angular/core --allow-dirty --force
SIKANDAR DE MOHAMMAD
fuente
0

Esto debería resolver el problema:

ng update @angular/cli @angular/core
usuario5919789
fuente
0

Solo haz estas cosas

npm install --save-dev @angular/cli@latest
npm audit fix
npm audit fix --force
tusher Mahmud
fuente
1
Como esta pregunta tiene casi 3 años y tiene 14 respuestas existentes, su respuesta sería mucho más valiosa si explicara por qué su respuesta tiene un valor que no estaba cubierto por todas las respuestas existentes.
David Buck
-1

npm install --save-dev @ angular-devkit / build-angular - ayudó a ng update @ angular / cli -> creó angular.json y otras actualizaciones.

Recopilando dependencias instaladas ... Encontradas 58 dependencias.

 ** Executing migrations for package '@angular/cli' **
            Updating karma configuration
            Updating configuration
            Removing old config file (.angular-cli.json)
            Writing config file (angular.json)
            Some configuration options have been changed, please make sure to update any  npm scripts which you may have modified. DELETE .angular-cli.json CREATE angular.json (4394 bytes) CREATE browserslist (429 bytes) UPDATE karma.conf.js (993 bytes) UPDATE public/tsconfig.spec.json (295 bytes) UPDATE package.json (2618 bytes) UPDATE tsconfig.json (437 bytes) UPDATE tslint.json (3135 bytes) UPDATE public/polyfills.ts (587 bytes) UPDATE public/tsconfig.app.json (199 bytes) npm WARN @angular/[email protected] requires a peer of zone.js@^0.8.4 but none is installed. You must install peer dependencies yourself.
MPV
fuente
-1

Elimine el angular actual e instale la versión específica.

  1. Mira esta versión

    ng --version

  2. si no es necesario, desinstale la versión

    Desinstalación de npm -g @ angular / cli

  3. si npm vesrion <5.x

    npm cache clean

  4. Verificar el caché

    npm cache verificar

  5. Instalar versión específica

    npm install -g @ angular / cli @ major.minor.patch

Amit Kumar
fuente