我需要确保安装了一些 NPM 依赖项,其中一些使用 node_gyp 进行编译。这意味着我必须调用“npm install --msvs_version=2013”,以便 node_gyp 将使用我的 vs.net 2013 编译器。但由于某种原因,将其添加到 psake 任务失败。看起来它没有正确传递第三个参数。
task npmInstall {
exec {npm install --msvs_version=2013}
}
调用“./psake npmInstall”会导致它运行,但 node_gyp 失败,因为它没有得到第三个参数。错误似乎很明显——它没有使用 2013 CPP 文件。它说 V110 的地方应该说 V120(通常通过调用 --msvs_version2013 来解决):
C:\Projects\MyProject\app\SubProject\node_modules\browser-sync\node_modules\socket.io\node_modules\engine.io\node_modules\ws\build\bufferutil.vcxproj(18,3):错误MSB4019:导入的项目未找到“C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Default.props”。确认声明中的路径正确,并且该文件存在于磁盘上。
直接在 powershell 中运行命令可以正常工作。在 powershell 中将命令作为脚本的一部分运行可以正常工作。即使直接在 powershell 中运行“Import-Module path/to/psake.psm1; exec {npm install --msvs_version=2013}”也可以正常工作。它仅作为 psake 任务的一部分失败。
这里会发生什么?