Windows 10下的node-gyp无法构建:MSBUILD退出代码为1。

3

操作系统为Windows 10, 开发工具为Microsoft Visual Studio 2013, 使用的 Node 版本为 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个回答

3

2
我正在使用npm 3.4.0,并且遇到了相同的问题。 - lowcrawler
1
npm -v 3.10.10 - 同样的问题。 - MPV

3
长文件路径是Visual Studio的一个大问题,微软已经表示他们没有计划在不久的将来修复它!
尝试将解决方案文件夹移动到驱动器的根目录(c:\ project)
此外,NPM 3+更改了模块文件夹结构,因此它们不会嵌套得那么深。 (它说它处于beta版本,但似乎已经为我解决了一些问题)
关于您在Github上的帖子,(我也遇到了无穷无尽的NPM和node-gyp问题,显然所有东西都是为在Linux上很好地工作而设计的!)
您可能需要安装VS2013(您可以使用express版本,请确保它包括C ++)
从github上的npm错误中:
v120是VS2013
v140是VS2015
为了使node-gyp使用正确的版本安装包,您可能需要在Windows中设置环境变量。
set GYP_MSVS_VERSION = 2013
(如果您在Windows系统属性中设置了它,请确保重新启动命令提示符)

谢谢,那正是我一开始所做的,将项目移动到根目录。我尝试安装了VS13和VS15,不过在放弃之前还想再试一次。 - nerijusgood
node-gyp在Windows上有太多特定版本的依赖。希望很快能找到更好的解决方案! - Matt
如果npm安装成功并且node-gyp构建成功,您可以尝试从另一台计算机进行操作,并将编译版本移动到具有相同Windows版本(x86或64)的另一台计算机上。我在工作中花了一整天的时间添加和删除组件,但是当我在家里的电脑上尝试时,它成功地构建了!将其复制到我的工作电脑上,现在在node中运行良好!(现在在package.json中锁定版本,以便它不会尝试更新并再次出现问题!) - Matt
我甚至不确定该怪谁:是微软、node-gyp还是两者都有责任 :( - nerijusgood
两者都有关系,但也与许多节点模块是为Linux或OSX构建有关。我终于在我的电脑上解决了所有的问题! 我尝试了很多方法,不确定哪种组合实际上解决了它!我会在这里放一个,然后稍后更新我的答案,因为我认为有很多人有类似的问题!我找到了第二个系统变量,以确保node-gyp使用正确的VS文件(我发现VS2013文件效果最好) GYP_MSVS_VERSION = 2013和 GYP_MSVS_OVERRIDE_PATH = C:\ Program Files(x86)\ Microsoft Visual Studio 12.0 - Matt

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. Your user account should be a member of the administrators group or you may need to enter your administrator password when prompted.
  2. Copy the existing 'npm' folder from %USERPROFILE%\AppData\Roaming\ and paste into %ALLUSERSPROFILE%
  3. Open a Windows command prompt and run the following commands;

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

    This will add/update the contents of: %USERPROFILE%\AppData\Roaming\npm\etc\npmc with;

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

    The first path above now only contains 18 characters and the second contains just 24 characters.

添加/更改NPM的PATH变量

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

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

    在“高级”选项卡下,点击“环境变量...”按钮。

  2. 选择“PATH”变量并点击“编辑...”按钮。

  3. 如果已经有一个类似于C:\Users\YOUR-USER-PROFILE-NAME\AppData\Roaming\npm的NPM条目,请选择它并点击“编辑”按钮。否则,点击“新建”按钮。

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接