4

由于长路径,在部署 node.js 时,npm 3.x 安装在 Windows/Azure 中重命名长路径失败:

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'

有没有办法克服它或防止 npm 重命名?

4

2 回答 2

4

我们找到了解决方案。似乎 npm 3.x 只有在您从较旧的 npm 升级时才需要重命名长路径时才会遇到这种情况。

这意味着,由于我们已经使用较旧的 npm 运行此部署,因此当我们升级到 npm 3.6.0 时,它试图扁平化现有部署并崩溃。

解决方案只是删除 node_modules 并重新部署。

于 2016-02-17T05:32:23.060 回答
0

根据您的信息,您的自定义模块azure_util是在 npm <3.x 版本中构建的,其中嵌套了node_modules文件夹。

在将 node.js 应用程序部署到 Azure Web 应用程序之前,您可以尝试以下步骤:

  1. 将本地 npm 版本升级到 3.x 版本。
  2. 在您的应用程序目录中运行命令npm dedupe,这将使树变平。您可以在npm 更改日志中找到说明

在这些操作之后,您的应用程序的 node.js deps 应该在node_modules文件夹中展开列表。它应该防止 npm 重命名。

如果你的本地环境仍然出现问题,你可以尝试在 npm 3.x 版本中重建你的自定义依赖,以提前使目录树平坦。

于 2016-02-16T01:55:42.340 回答