you should run nodejs node need implement app node.js azure npm azure-web-sites npm-install

node.js - should - La instalación de npm 3.x falla al cambiar el nombre de rutas largas en Windows/Azure



upload node to azure (2)

Según su información, su módulo personalizado azure_util se azure_util en la versión npm <3.x, que ha anidado las carpetas node_modules .

Puede probar los siguientes pasos antes de implementar su aplicación node.js en Azure Web Apps:

  1. actualice su versión local de npm hasta la versión 3.x.
  2. ejecuta el comando npm dedupe en el directorio de tu aplicación, lo que aplanará el árbol. Puede encontrar la descripción en el registro de cambios npm

Después de estas operaciones, las deps.no de node de su aplicación deben listarse en la carpeta node_modules . Y debería evitar el cambio de nombre npm.

Si aún se produce el problema en su entorno local, puede intentar reconstruir su dependencia personalizada en la versión nx 3.x, para hacer que el árbol de directorios esté plano por adelantado.

La instalación de npm 3.x falla al cambiar el nombre de las rutas largas en Windows / Azure cuando se implementa node.js debido a rutas largas:

npm ERR! EINVAL: invalid argument, rename ''D:/home/site/wwwroot/node_modules/azure_util/node_modules/pkgcloud/node_modules/gcloud/node_modules/gapitoken/node_modules/jws/node_modules/base64url/node_modules/meow/node_modules/indent-string/node_modules/repeating/node_modules/is-finite/node_modules/number-is-nan'' -> ''D:/home/site/wwwroot/node_modules/number-is-nan''

¿Hay alguna manera de superarlo o evitar que renueve npm?


Encontramos una solución. Parece que npm 3.x está llegando a esta situación cuando necesita cambiar el nombre de una ruta larga solo cuando se actualiza desde una npm más antigua.

Es decir, dado que ya teníamos esta implementación ejecutándose con una npm más antigua, cuando la actualizamos a npm 3.6.0, intentó aplanar la implementación existente y se bloqueó.

La solución fue simplemente eliminar los node_modules y volver a implementarlos.