术语“gulp”未被识别为命令的名称,出现错误。

5
所以我正在尝试在我们的构建服务器上运行gulp,但是一直收到上述错误。如果我使用我的用户帐户登录构建服务器,则一切正常工作,因为我在我的帐户下全局安装了gulp,但是当Jenkins运行我的powershell脚本时,它会失败并显示以下错误:

"The term 'gulp' is not recognized as the name of a cmdlet error"

所以我尝试在我的脚本中全局安装gulp,以便它与Jenkins使用的任何用户一起安装。
然后我添加了npm -g ls到powershell脚本中,并发现它是在系统用户下全局安装的:

C:\Windows\system32\config\systemprofile\AppData\Roaming\npm > gulp@3.9.0

由于我仍然得到相同的错误,因此我采纳了这篇文章的建议,并添加了一个包含以上目录的路径变量,但是仍然出现相同的错误。
是否有任何想法可以尝试?我对为什么不起作用感到困惑。

Jenkins正在使用哪个用户账户?您能否登录此账户并尝试从命令行运行gulp? - Mario Tacke
它正在使用系统用户。我无法使用该用户登录。 - Aaron
在这种情况下,您可以作为用户帐户运行Jenkins并查看是否可以通过吗? - Mario Tacke
2个回答

1

请确保包含gulp.exe的目录包含在$env:PATH环境变量中。您可以使用[Environment] :: SetEnvironmentVariable()方法更新机器范围的PATH变量。

假设gulp可执行文件的路径为C:\ Program Files \ gulp \ bin \ gulp.exe

# Directory containing exe
$GulpFolderPath = 'C:\program files\gulp\bin'

# Retrieve user-agnostic PATH environment variable value
$CurrentEnvPath = [Environment]::GetEnvironmentVariable('PATH','Machine')

# Check if PATH already contains gulp
if($CurrentEnvPath -split ';' -notcontains $GulpFolderPath)
{
    # if not, update it
    $NewEnvPath = $CurrentEnvPath,$GulpFolderPath -join ';'
    [Environment]::SetEnvironmentVariable('PATH',$NewEnvPath,'Machine')
}

谢谢,但还是不行。我会尝试添加一些Write-Host语句来查看是否进入了“PATH已经包含gulp”的条件。另外,由于它是gulp,不是.exe文件,所以我正在指定.cmd文件的路径。不确定这是否正确。 - Aaron
“.cmd”和“.exe”没有区别。 - Mathias R. Jessen
我有同样的问题...你解决了吗? - MaxwellLynn

0

终于有一个真正的GULP解决方案

在过去的两天里,我一直在寻找解决方案,但没有成功。最后同事帮我运行了以下命令:第一个命令是本地和全局安装gulp,第二个命令是全局安装angular cli,我认为这是gulp最终成功运行的原因:

npm i -g gulp gulp
npm i @angular/cli -g

随后我运行了这个命令来全局和本地更新 npm 包;gulp 最终正常工作了:
npm install -g npm

现在运行gulp -v会成功:

CLI version: 2.2.0
Local version: 4.0.2

注意:我的操作系统是Windows 10 64位架构,最新更新于2019年7月17日。没有代理设置,也没有网络限制!

如果您在互联网之前使用了代理,请配置您的.npmrc文件,方法是从命令行应用程序运行命令npm config edit

proxy=x.x.x.x:PORT/
https-proxy=x.x.x.x:PORT/

prefix=C:\npm\node_modules
cache=C:\npm\cache

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