Windows 10 node-gyp 无法构建:MSBUILD 失败,退出代码为 1

Windows 10 node-gyp cannot build: MSBUILD failed with exit code 1

Windows 10, 微软 Visual Studio 2013, 节点 v0.12.7, 节点 gyp v2.0.2

我总是遇到 node-gyp 的构建错误:

Error: `C:\Program Files (x86)\MSBuild.0\bin\msbuild.exe` failed with exit code: 1

还有红色描述:

Could not write lines to file "Release\obj\validation\validation.tlog\validation.lastbuildstate". The specified path, file name, or both are too long. The fully qualified file name must be less than 260 characters, and the directory name must be less than 248 characters. 

更大的错误摘录: https://gist.github.com/nerijusgood/63e54d9c376999a044bb

据我了解,一切正常 运行,但是 msbuild 无法写入长路径名。是否有此补丁或 windows 解决方法?

长文件路径是 Visual Studio 的一个大问题,Microsoft 表示他们没有计划在不久的将来修复!
尝试将您的解决方案文件夹移动到驱动器的根目录 (c:\project)
此外,NPM 版本 3+ 更改了模块文件夹结构,因此它们不会嵌套得太深。 (它说它处于测试阶段,但似乎已经为我解决了一些问题)

关于你在 Github 上的 post,(我也 运行 陷入了 NPM 和 node-gyp 的无穷无尽的问题,显然一切都是为了工作很好linux!)
您可能需要安装 VS2013(您可以使用 express 版本,确保它包含 c++)
来自 github:
上的 npm 错误 v120 是 VS2013
v140 是 VS2015

要使 node-gyp 使用正确版本的软件包,您可能需要在 Windows 中设置环境变量。
设置 GYP_MSVS_VERSION=2013
(如果您在 windows 系统属性中设置它,请确保重新启动命令提示符)

编辑:标题中的问题与 OP 的实际问题(此答案解决)略有不同。
对于 node-gyp,或一般的 MSBUILD 错误,请参阅其他问题。

要解决 "The specified path, file name, or both are too long." 问题,将 npm 更新到版本 3+This has been bothering all windows users for a while now, and the answer is to flatten your dependencies。 npm@3.x 即使在安装期间也会自动将所有依赖项扁平化到根。

默认情况下在 MS Windows10 中,NPM 全局安装路径将使用您的用户配置文件目录;

%USERPROFILE%\AppData\Roaming\npm
%USERPROFILE%\AppData\Roaming\npm-cache

翻译成类似的东西;

C:\Users\YOUR-USER-PROFILE-NAME\AppData\Roaming\npm
C:\Users\YOUR-USER-PROFILE-NAME\AppData\Roaming\npm-cache

上面的第一个路径包含 51 个字符,第二个路径包含 57 个字符。根据长度或您的用户个人资料名称,您的路径可能会更短或更长。

因此,目的是通过使用 -g 标志更改使用 NPM 全局安装任何内容时使用的目录,以使用字符较少的目录。

将 "global" NPM 文件夹更改为 %ALLUSERSPROFILE%\(npm|npm-cache)

  1. 您的用户帐户应该是管理员组的成员,否则您可能需要在出现提示时输入管理员密码。
  2. %USERPROFILE%\AppData\Roaming\ 复制现有 'npm' 文件夹并粘贴到 %ALLUSERSPROFILE%
  3. 打开一个Windows命令提示符和运行以下命令;

    npm config --global set prefix "C:\ProgramData\npm"
    npm config --global set cache "C:\ProgramData\npm-cache"
    

    这将 add/update 的内容:%USERPROFILE%\AppData\Roaming\npm\etc\npmc 与;

    prefix=C:\ProgramData\npm
    cache=C:\ProgramData\npm-cache
    

    上面的第一个路径现在只包含 18 个字符,第二个只包含 24 个字符。

Add/change NPM 的 PATH 变量

  1. 按照以下步骤导航至 'Environment Variables';

    开始 > 设置 > 系统 > 关于 > 系统信息 > 高级系统设置

    在 'Advanced' 选项卡下单击 'Environment Variables...' 按钮。

  2. Select 'PATH' 变量并单击 'Edit...' 按钮。

  3. 如果已经有像 C:\Users\YOUR-USER-PROFILE-NAME\AppData\Roaming\npm 这样的 NPM 条目,select 它并单击 'Edit' 按钮。否则,单击 'New' 按钮。

  4. 粘贴C:\ProgramData\npm并点击'OK'按钮保存。

  5. 最后,重启电脑。