【问题标题】:npm install sometimes fails in Visual Studio Onlinenpm install 在 Visual Studio Online 中有时会失败
【发布时间】:2015-07-22 18:14:07
【问题描述】:

我在使用 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,所以我认为是其中一些更改导致了它,但现在,我什至不再接触那个项目了,它编译得很好,直到突然我再次遇到这个错误。

同时,我添加了一个微小的更改来提交和推送它,它再次编译良好。知道什么会导致这种情况以及我如何至少降低出现该错误的风险吗?

这是我的预构建 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 次成功构建之后,我再次遇到了类似的问题(虽然现在少了很多)

【问题讨论】:

    标签: powershell npm visual-studio-2015 nuget azure-devops


    【解决方案1】:

    进一步调查显示,网络连接或代理可能存在问题,这很奇怪,因为bower install 总是成功。无论如何,对我来说效果很好的解决方案如下:

    • 第一步使用来自 Visual Studio Online 的原生 npm install build 步骤
    • 为构建服务添加一个环境变量,以便在您的脚本中识别它正在构建服务器上运行(我将其命名为 VSO 并将其赋值为 1)
    • 检查你的脚本是否在构建服务器上运行,在 powershell 中你可以这样做:

      If ($env:VSO -ne 1)
      {
        echo "npm install"
        npm install
      }
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 2014-10-12
      • 1970-01-01
      • 2016-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多