0

我正在尝试为 node.js 脚本运行一个永久命令以在后台运行它。我的完整命令是

"C:/Users/Administrator/AppData/Roaming/npm/forever.cmd" -c "C:/Program Files/nodejs/node.exe" start app.js

当我直接在命令提示符下运行它时,这工作正常。但是,当我把它作为詹金斯的构建步骤时,我总是会收到以下错误

C:\Program Files (x86)\Jenkins\workspace\apps>"C:/Users/Administrator/AppData/Roaming/npm/forever.cmd" -c "C:/Program Files/nodejs/node.exe" start app.js 
'node' is not recognized as an internal or external command,
operable program or batch file.
Build step 'Execute Windows batch command' marked build as failure

机器上的 PATH 已正确设置并包含节点应用程序的路径。这被确认为命令在从机器上本地运行时成功运行而没有给出绝对路径。此外,我还使用 -c 选项在命令本身中提供了节点可执行文件的路径,以防它不从 PATH 变量中获取。

不确定这是否可能是因为詹金斯使用 JVM 客户端在窗口上运行东西?

任何解决此问题的建议。

谢谢马诺伊

4

1 回答 1

1

安装时已经运行的进程不会拾取对PATH(例如在安装类似软件之后所做的更改)的更改。node

这些进程(Jenkins 进程和远程机器上的 Slave 进程,在这种情况下)需要在安装后重新启动,以便继承新修改的PATH.

当您通过远程登录并手动运行命令进行测试时,您的登录会话命令提示符是新创建的,因此继承了新的PATH并且您的测试工作,但是自安装以来尚未重新启动的 Jenkins Slave 进程将没有新的PATH

于 2015-07-03T14:10:29.267 回答