我遇到了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'
我在开始时正在研究gulpfile,所以我认为其中一些变化导致了它,但是现在,我甚至都没有触及那个项目了,它编译得很好,直到突然我再次遇到这个错误。
与此同时,我添加了一个微小的更改来提交并推送它,它再次编译好。知道什么可以导致这种情况,以及我如何能够至少降低获得该错误的风险?
这是我的pre-build 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次之后,我又遇到了类似的问题(尽管现在情况要少得多)
答案 0 :(得分:0)
进一步的调查表明,网络连接或代理可能存在一些问题,这很奇怪,因为bower install
总是成功的。无论如何,对我来说工作得很好的解决方案如下:
VSO
并为其分配值1)检查你的脚本是否在构建服务器上运行,在powershell中你可以这样做:
If ($env:VSO -ne 1)
{
echo "npm install"
npm install
}