npm windows install globalmente da como resultado npm ERR! extraño

121

Soy nuevo en gruñir y npm. Así que estoy probando un "ejemplo de libro de cocina" en el sitio ' http://tech.pro/tutorial/1190/package-managers-an-introductory-guide-for-the-uniniticated-front-end-developer#front_end_developers ' . No debería tener que buscar allí ahora, pero pensé que sería bueno compartir el sitio. Hasta ahora todo bien, hasta que se trata de la instalación global. (Ok, tuve que resolver algunos errores, pero ahora tengo npm funcionando).

Cuando se trata de intentar instalar algo globalmente, me quedo atascado.

Lo que hice hasta ahora para probar la instalación global de algún paquete:

  1. Directorio de prueba creado grunttest

  2. Dentro de ese directorio:

    npm install -g jshint

Salida que puedo ver:

 npm http GET https://registry.npmjs.org/jshint
 npm http 304 https://registry.npmjs.org/jshint
 ...
 npm http 304 https://registry.npmjs.org/string_decoder
 C:\Program Files\nodejs\node_modules\npm\jshint -> C:\Program Files\nodejs\node_modules\npm\node_modules\jshinnt
 [email protected] C:\Program Files\nodejs\node_modules\npm\node_modules\jshint
 ├── [email protected]
 ├── [email protected]
 ├── [email protected]
 ├── [email protected]
 ├── [email protected] ([email protected], [email protected])
 ├── [email protected] ([email protected])
 └── [email protected] ([email protected], [email protected], [email protected], [email protected])

Me acabo de dar cuenta del 304, que debería estar bien, porque solo dice que el recurso no se modificó desde la última instalación (unos minutos antes).

Verificando si el jshint existe con:

`npm -global list`

Salida:

[email protected] C:\Program Files\nodejs\node_modules\npm
├── [email protected]
├── [email protected]
├─...
├──
├── [email protected]
├── [email protected]
├── [email protected]
├─┬ [email protected]
│ └── [email protected]
├─┬ [email protected] extraneous
│ ├─┬ [email protected]
│ │ └─┬ [email protected]
│ │   └── [email protected]
│ ├── [email protected]
│ ├── [email protected]
│ ├─┬ [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ ├── [email protected]
│ │ └─┬ [email protected]
│ │   └─... ├── [email protected]
├── [email protected]
└── [email protected]

**npm ERR! extraneous: [email protected] C:\Program Files\nodejs\node_modules\npm\node_modules\jshint npm**

Preguntas:

  1. ¿Por qué obtengo npm ERR? extraño ...?
  2. Qué significa eso?
  3. ¿Cómo puedo resolver este problema?

Información:

Estoy en una máquina con Windows Windows 7, usando cygwin como shell. intentar solo el jshint ( jshint someTestfile.js) por supuesto no funciona.

Gracias de antemano, Meru

Meru
fuente

Respuestas:

208

npm ERR! extraneoussignifica que un paquete está instalado pero no está listado en su proyecto package.json.

Dado que está enumerando paquetes que se han instalado globalmente, le dará muchos errores extraños que pueden simplemente ignorarse porque la mayoría de las cosas instaladas globalmente no estarán en su proyecto package.json.

Kyle Robinson joven
fuente
1
¡Hola! Gracias por la respuesta. ¿Significa esto también que realmente debería poder ejecutar el "jshint", correcto?
Meru
Correcto. La ejecución jshint myfile.jsdebe ejecutar jshint myfile.js.
Kyle Robinson Young
1
Ah, ya veo. Con Grunt, todo pasa por tareas. Cargaría y configuraría la grunt-contrib-jshinttarea en su Gruntfile.js. Lo único que instala globalmente es lo npm i grunt-cli -gque le da acceso para ejecutar el gruntcomando para ejecutar un Gruntfile.js. Consulte esta guía para obtener más información: gruntjs.com/getting-started
Kyle Robinson Young
8
Si tiene bibliotecas extrañas guardadas localmente (no globalmente), puede ejecutar npm prunepara deshacerse de ellas.
krx
2
@KyleRobinsonYoung: ¿Qué tal si mencionas esto en respuesta? Puede eliminar todos los paquetes no utilizados usandonpm prune --your-env
geek_guy
21

1 y 2: significa que no tiene el jshint listado en el archivo package.json de su proyecto, pero que está instalado globalmente. Entonces no es un gran problema.

3: Para evitar este error extraño , puede ejecutar o volver a ejecutar la instalación con la opción --save. Esto actualizará automáticamente su archivo package.json:

npm install -g jshint --save

O necesita actualizar manualmente su archivo package.json con un "dependencies": {...}

rebe100x
fuente
en ma casos funciona solo con local sin duplicado global
BG BRUNO
2
--saveno funciona junto con -g. La lista global de paquetes no tiene package.json.
Guido Bouman
5

Resolví esto haciendo un npm updateen la carpeta del paquete principal que eliminó algunos de los paquetes extraños de la lista y luego lo hizo npm uninstall <package>con los pocos restantes.

Parece haber funcionado, ya que no obtengo errores después de hacer esto.

metakermit
fuente
3

Lo resolví combinando todas las respuestas. Al principio instalé el paquete a nivel mundial.

npm install -g packagename --save

Dado que npm instaló este paquete también a nivel mundial, pero no lo agregó a mi archivo package.json local, tuve que hacer algo al respecto.

Elijo la solución para eliminar la local y luego instalarla globalmente.

npm uninstall packagename
npm install -g packagename

De esta manera, no tengo más advertencias y no estropeo el archivo package.json.

goleador
fuente
Más 100. Tuve que desinstalar localmente e instalar globalmente.
Collin Peters
1

¡En mi caso, vi este ERR npm! mensaje extraño 'en mi terminal cygwin cuando hice un' npm ls '. Pensé que esta era una especie de configuración corrupta globalmente después de haber tenido muchos retoques. Aprendo las siguientes observaciones aquí:

  • 'npm ls' da diferentes salidas dependiendo de cuál sea la ubicación de su carpeta actual.
  • 'npm ls' intenta detectar la presencia de una carpeta 'node_modules' en la ubicación de la carpeta actual y enumera esos contenidos. ¡NO los globales!
  • Además, si la carpeta actual que contiene 'node_modules' también tiene un archivo package.json que contiene menos módulos enumerados aquí, entonces se muestra el error.

Yo 'rm package.json' y 'npm ls' ya no muestran el mensaje de error. Entonces digo, que siempre verifique la ubicación actual para ver la presencia de la carpeta 'node_modules' y el archivo package.json porque estos se priorizan primero en la verificación y si faltan, la verificación continúa en la carpeta principal y así sucesivamente, y si ha manipulado muchos fragmentos de código, es posible que haya dispersado montones y montones de carpetas node_modules y archivos package.json. Nada está realmente dañado aquí, a diferencia de las experiencias que tenemos cuando hacemos desarrollo J2EE Java / eclipse IDE o durante los días en que tenemos que usar regedit para cambiar la configuración en Windows.

Truthadjustr
fuente
1

En mi caso, fue porque el nombre del paquete en su package.jsonarchivo no era el mismo que el nombre de dependencia que figura en el package.jsonmódulo dependiente. Mi error, ya que es un módulo nuevo que creé, pero difícil de detectar, ya que npm no da ninguna pista.

Esto sucedió al usar la dependencies: { "my-module": "file:local-modules/mymodule" }sintaxis, con un error tipográfico en el nombre "my-module".

youen
fuente
0

Esto se debe al hecho de que su paquete no está en su package.json. Si lo agrega, el problema se resolverá, mire la imagen a continuación:

ingrese la descripción de la imagen aquí

Narendra Sagadevan
fuente