node.js - Jenkins 找不到 npm

标签 node.js linux jenkins npm

在这个 linux 服务器上,我有一个名为“myuser”的用户。 对于这个用户,在回显路径时,我得到了这个:

/home/myuser/bin:/home/myuser/.local/bin:/home/myuser/.nvm/versions/node/v6.11.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

有一个 Node 应用程序,手动部署时我运行:

npm i

而且它有效。

现在,我安装了 Jenkins。我尝试安装的 Jenkins 项目位于:

/var/lib/jenkins/workspace/test

构建正在执行一个 shell 脚本。在那个窗口中我输入了:

#!/bin/bash
npm i

使用 Jenkins 构建时,我得到了这个:

[test] $ /bin/bash /tmp/jenkins756533162549346948.sh
/tmp/jenkins756533162549346948.sh: line 3: npm: command not found
Build step 'Execute shell' marked build as failure
Finished: FAILURE

如果我只写:

echo $PATH

在 Jenkins shell 中,我得到了这个:

[test] $ /bin/sh -xe /tmp/jenkins5067097808572366507.sh
+ echo /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/snap/bin
[test] $ /var/lib/jenkins/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/6.11.1/bin/node /tmp/jenkins8733250738704177758.js
Finished: SUCCESS

如您所见,我安装了 nodejs 插件。 无论如何,在使用 Jenkins shell 时,找不到 npm 甚至 Node 。 如何让 Jenkins 知道 npm/node 在哪里? 我尝试先在 shell 中写这个:

$PATH=/home/myuser/.nvm/versions/node/v6.11.1/bin

但还是没有运气。

最佳答案

我已经为此奋斗了一段时间。终于找到了解决办法。从你的作业菜单中选择 ConfigureBuild Environment 选择 Provide Node & npm bin/folder to PATH 你可以保留默认设置,你很好去。

enter image description here

正如 Eric Wang 在评论中指出的那样,需要先安装 NodeJS 插件 才能出现此选项: https://wiki.jenkins.io/display/JENKINS/NodeJS+Plugin

关于node.js - Jenkins 找不到 npm,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45914038/

相关文章:

linux - 完成意外标记附近的语法错误

Python - subprocess.Popen - ssh -t user@host 'service --status-all'

java - 提取 tar 文件时无效的用户/用户组

jenkins - 如何在Jenkins Groovy脚本中执行HTTP POST请求?

ios - 如何修复 Xcode 在 Jenkins 上的代码签名问题?

node.js - 查询 Sequelize 相关模型

html - 我用 ejs 修复了一个奇怪的语法错误,我想知道问题是什么

javascript - 我应该制作自己的graphql风格的api但只能使用sequelize吗?

apache - 如何将多个域路由到多个 Node 应用程序?

Jenkins 亚马逊 ECS 插件 : No Fargate configuration exists for given values