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

时间:2015-08-04 19:15:27

标签: node.js visual-studio-2013 msbuild windows-10 node-gyp

Windows 10, Microsoft Visual Studio 2013, 节点v0.12.7, node-gyp v2.0.2

我总是使用node-gyp获取错误构建错误:

Error: `C:\Program Files (x86)\MSBuild\12.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解决方法的补丁?

3 个答案:

答案 0 :(得分:3)

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

关于你在Github上的帖子,(我一直遇到NPM和node-gyp的无数问题,显然一切都在linux上运行良好!)
您可能需要安装VS2013(您可以使用快速版本,确保它包含c ++)
来自github上的npm错误:
v120是VS2013
v140是VS2015

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

答案 1 :(得分:3)

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

解决"指定的路径,文件名或两者都太长。" 问题,将npm更新为版本3 + This has been bothering all windows users for a while now, and the answer is to flatten your dependencies。即使在安装过程中,npm@3.x也会自动将所有依赖项展平为root。

答案 2 :(得分:1)

默认情况下,在MS Windows 10中,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全局安装任何内容时使用的目录。

将“全局”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"
    

    这将使用;

    添加/更新:%USERPROFILE%\AppData\Roaming\npm\etc\npmc的内容
    prefix=C:\ProgramData\npm
    cache=C:\ProgramData\npm-cache
    

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

  4. 添加/更改NPM的PATH变量

    1. 按照以下步骤导航至“环境变量”;

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

      在“高级”标签下,点击“环境变量...”按钮。

    2. 选择“路径”变量,然后点击“编辑...”按钮。

    3. 如果已经存在NPM条目,例如C:\ Users \ YOUR-USER-PROFILE-NAME \ AppData \ Roaming \ npm,请选择它并单击“编辑”按钮。否则,请单击“新建”按钮。

    4. 粘贴C:\ProgramData\npm并点击“确定”按钮进行保存。

    5. 最后,重新启动计算机。