npm WARN notsup OMITIR LA DEPENDENCIA OPCIONAL: Plataforma no compatible para [email protected]

113

Estoy tratando de ejecutar este proyecto https://github.com/Soundnode/soundnode-app después de actualizar mi versión minimatch a 3.10.9, recibo este error

npm WARN opcional SALTANDO DEPENDENCIA OPCIONAL: fsevents@^1.0.0 (node_modules \ webpack \ node_modules \ watchpack \ node_modules \ chokidar \ node_modules \ fsevents): npm WARN notsup SALTANDO DEPENDENCIA OPCIONAL: Plataforma no admitida para fsevents {1.0: os ":" darwin "," arch ":" any "} (actual: {" os ":" win32 "," arch ":" ia32 "})

mi configuración es Nodo v - 4.4.2 npm v- 3.10.9 Estoy trabajando en el sistema operativo Windows de 32 bits

Aishwary Tiwari
fuente
1
No me parece un error, ¿tiene problemas para ejecutar el código a pesar de esto? npm WARNes solo eso: una advertencia a la que valdría la pena prestar atención, pero que en realidad no rompió nada.
Aurora0001
2
Y esta advertencia en particular solo le dice que una dependencia opcional no se instaló porque su plataforma no cumplía con sus requisitos. En este caso, está buscando a Darwin y estás en win32
Dave V
Es un proyecto gruñón, después de ejecutar este comando "npm install -g grunt-cli", trato de ejecutar npm install cuando recibo esta advertencia,
Aishwary Tiwari
1
@AishwaryTiwari, ¿realmente recibiste un error o el código no funciona? Es poco probable que las advertencias sean un problema real, porque (como dice el mensaje de error), omitió una dependencia opcional.
Aurora0001
1
Hay una solicitud de extracción que soluciona el problema: github.com/npm/npm/pull/19198 Puede suscribirse a esa solicitud de extracción para obtener una actualización cuando se cierre.
RiZKiT

Respuestas:

150

Es una advertencia, no un error. Ocurre porque fseventses una dependencia opcional, que se usa solo cuando el proyecto se ejecuta en un entorno macOS (el paquete proporciona 'Acceso nativo a Mac OS-X FSEvents').

Y dado que está ejecutando su proyecto en Windows, fseventsse omite como irrelevante.

Hay un PR para corregir este comportamiento aquí: https://github.com/npm/cli/pull/169

piotr.d
fuente
35
¿No se contradice algo que es opcional y dependiente?
Martijn Burger
7
Esa es más una cuestión teórica. ¿Quizás conditional dependencysería mejor? Nombrar es difícil. Supongo que no fue fácil encontrar un buen nombre para este caso sin dejar de ser conciso.
piotr.d
10
npm install --no-optional
suiwenfeng
5
Estoy totalmente de acuerdo, @DemPilafian. Por lo tanto, edité mi respuesta original y eliminé "solo". Personalmente, trato las advertencias como errores, pero en este caso, en mi humilde opinión, esto no debería registrarse como una advertencia, sino más bien como información, ya que en el entorno de Windows no se puede hacer nada para que la advertencia desaparezca.
piotr.d
23
Buena respuesta, ¿cómo me deshago de ella?
TetraDev
32

Esto todavía parece ser un problema, lo que hace que la instalación de paquetes se cancele con advertencias de que los paquetes opcionales no se instalan debido a una "plataforma no compatible".

El problema se relaciona con el "shrinkwrap" o package-lock.jsonque persiste después de cada ejecución del administrador de paquetes. Los intentos posteriores siguen fallando ya que se hace referencia a este archivo en lugar de package.json.

Agregar estas opciones al npm installcomando debería permitir que los paquetes se instalen nuevamente.

   --no-optional argument will prevent optional dependencies from being installed.

   --no-shrinkwrap argument, which will ignore an available package lock or
                   shrinkwrap file and use the package.json instead.

   --no-package-lock argument will prevent npm from creating a package-lock.json file.

El comando completo se ve así:

    npm install --no-optional --no-shrinkwrap --no-package-lock

nJoy!

nickl-
fuente
1
¿Es arriesgado establecer la --no-optionalbandera para el código que funciona solo para eliminar la advertencia? ¿Por qué no está configurado de forma predeterminada?
cederlof
5
Esto no puede ser una solución ya que usar package-lock.json es algo bueno y esta solución sugiere lo contrario.
ismailarilik
@ismailarilik Esta solución me permite instalar paquetes para poder continuar con mi trabajo.
nickl-
"--no-opcional" es una muy, muy mala idea. Por lo general, está bien ignorar la advertencia. También puede usar npm install -f: github.com/angular/angular/issues/13935
FoggyDay
12

Usando el parámetro --force:

npm i -f
JF
fuente
2
Forcé la instalación una vez con este comando y ahora, cuando lo ejecuto npm install, no tengo ninguna advertencia, ¡gracias!
Allenile
1
Recibí algunos errores al ejecutar ese comando, pero después de volver a ejecutar npm install, ¡las advertencias desaparecieron! gracias señor
ccoutinho
Entonces, ¿está instalando en su proyecto esas dependencias inútiles (en una máquina con Windows) para eliminar las advertencias? Si es así, espero deshacerse de ellos en el edificio de producción. Me gusta la solución. Elimina las cosas relacionadas con Apple en mi pantalla.
Josep Alacid