npm install 在 Visual Studio Online 中有时会失败
npm install sometimes fails in Visual Studio Online
我在使用 VS Online 和 nuget-restore 时遇到了问题。它会报告找不到 Visual Studio 2015 找到并安装的软件包。所以我在 nuget 的目标文件中指定使用 APIv3 和 APIv2。从那以后,总是能找到所有 nuget 包,但我开始遇到不同的、相当随机的 npm 错误。
我有一个预构建脚本(在我的项目文件中配置),它安装所有必需的 npm 和 bower 包,然后运行 gulp。这在本地工作正常,而且大多数时候也在网上。但是平均每 ~4 次,我都会遇到类似这样的异常:
EPERM, open 'C:\NPM\Cache\fedb6d47-PM-Cache-clone-1-0-2-package-tgz.lock'
或者这个:
EPERM, open 'C:\NPM\Cache\ca5822dc-sh-isarguments-3-0-4-package-tgz.lock'
一开始我在处理 gulp 文件,所以我认为是这些更改造成的,但现在,我什至不再接触那个项目了,它编译得很好,直到我突然再次出现此错误。
与此同时,我添加了一个微小的更改来提交和推送它,它再次编译正常。知道是什么原因导致的吗?我怎样才能至少降低出现该错误的风险?
这是我预构建的 powershell 脚本:
param($build_config)
$webProjectName = "WEB_PROJECT"
$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
cd $dir
cd ..\src$webProjectName
echo "npm install"
npm install
echo "bower install"
bower install
echo "gulp $build_config"
gulp $build_config
更新:
我曾经通过
执行那个 powershell 脚本
PowerShell -File script.ps1
切换到
后
PowerShell -NonInteractive -NoProfile -Command script.ps1
它似乎已经修复了错误,但是在 ~20 次成功构建之后,我再次遇到了类似的问题(虽然现在很少见)
进一步调查显示,网络连接或代理可能存在问题,这很奇怪,因为 bower install
总是成功。无论如何,对我来说效果很好的解决方案如下:
- 第一步使用 visual studio 在线 npm 安装构建步骤
- 向构建服务添加一个环境变量,以便在您的脚本中识别它在构建服务器上 运行(我将其命名为
VSO
并为其分配值 1)
检查你的脚本是否在构建服务器上 运行,在 powershell 中你可以这样做:
If ($env:VSO -ne 1)
{
echo "npm install"
npm install
}
我在使用 VS Online 和 nuget-restore 时遇到了问题。它会报告找不到 Visual Studio 2015 找到并安装的软件包。所以我在 nuget 的目标文件中指定使用 APIv3 和 APIv2。从那以后,总是能找到所有 nuget 包,但我开始遇到不同的、相当随机的 npm 错误。
我有一个预构建脚本(在我的项目文件中配置),它安装所有必需的 npm 和 bower 包,然后运行 gulp。这在本地工作正常,而且大多数时候也在网上。但是平均每 ~4 次,我都会遇到类似这样的异常:
EPERM, open 'C:\NPM\Cache\fedb6d47-PM-Cache-clone-1-0-2-package-tgz.lock'
或者这个:
EPERM, open 'C:\NPM\Cache\ca5822dc-sh-isarguments-3-0-4-package-tgz.lock'
一开始我在处理 gulp 文件,所以我认为是这些更改造成的,但现在,我什至不再接触那个项目了,它编译得很好,直到我突然再次出现此错误。
与此同时,我添加了一个微小的更改来提交和推送它,它再次编译正常。知道是什么原因导致的吗?我怎样才能至少降低出现该错误的风险?
这是我预构建的 powershell 脚本:
param($build_config)
$webProjectName = "WEB_PROJECT"
$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
cd $dir
cd ..\src$webProjectName
echo "npm install"
npm install
echo "bower install"
bower install
echo "gulp $build_config"
gulp $build_config
更新:
我曾经通过
执行那个 powershell 脚本PowerShell -File script.ps1
切换到
后PowerShell -NonInteractive -NoProfile -Command script.ps1
它似乎已经修复了错误,但是在 ~20 次成功构建之后,我再次遇到了类似的问题(虽然现在很少见)
进一步调查显示,网络连接或代理可能存在问题,这很奇怪,因为 bower install
总是成功。无论如何,对我来说效果很好的解决方案如下:
- 第一步使用 visual studio 在线 npm 安装构建步骤
- 向构建服务添加一个环境变量,以便在您的脚本中识别它在构建服务器上 运行(我将其命名为
VSO
并为其分配值 1) 检查你的脚本是否在构建服务器上 运行,在 powershell 中你可以这样做:
If ($env:VSO -ne 1) { echo "npm install" npm install }