gpt4 book ai didi

node.js - 使用 Jenkins 时永远无法启动

转载 作者:太空宇宙 更新时间:2023-11-03 22:01:23 27 4
gpt4 key购买 nike

所以我有一个 Jenkins 构建,它使用以下命令调用永久启动。

sudo NODE_ENV=development forever start -a -l /var/nodejs/app/logs/forever.log -o /var/nodejs/app/logs/output.log -e /var/nodejs/app/logs/error.log /var/nodejs/app/app.js 

此命令引发以下错误。

running on the development server

fs.js:427
return binding.open(pathModule._makeLong(path), stringToFlags(flags), mode);
^
Error: ENOENT, no such file or directory 'ssl/gd_bundle.crt'
at Object.fs.openSync (fs.js:427:18)
at Object.fs.readFileSync (fs.js:284:15)
at Object.<anonymous> (/var/nodejs/app/app.js:190:10)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Function.Module.runMain (module.js:497:10)
at startup (node.js:119:16)
at node.js:902:3
error: Forever detected script exited with code: 8

当我从服务器上的命令行运行它时,我会遇到相同的错误,但前提是我不在包含 app.js 文件的目录中。如果我指定 app.js 文件的路径,为什么永远对文件所在的位置敏感。

我还发现forever不尊重-p标志或forever配置目录。有什么想法吗?

最佳答案

这与 Jenkins 没有任何关系,正如您所说,您从命令行收到相同的错误。

据我所知,这不是“永远[对文件所在位置敏感””的问题,而是您的nodejs脚本app.js的问题对它的启动位置敏感。来自 Forever 的示例 使用带有目录的路径没有问题。尝试从不正确的目录永远启动脚本,您将观察到相同的问题。

在脚本代码中的某个位置,您在确定 ssl/gd_bundle.crt 的位置时依赖于当前工作目录。 没有看到你的代码源,我只能猜测和指责。

  • 如果您的 ssl/gd_bundle.crt 位置与脚本位置相关,则如本答案所示: How do I get the path to the current script with Node.js? ,您应该使用__dirname来获取脚本的目录位置,无论当前工作目录如何,该位置都是相同的。

  • 如果 ssl/gd_bundle.crt 的位置在文件系统上是固定的,则应使用以 / 开头的绝对路径以确保它独立于当前工作目录。

至于被忽略的-p,快速谷歌搜索会发现: forever -p /var/run/forever is ignored 这表明这是一个 Unresolved 错误。

编辑:
为了避免修改 nodejs 脚本(如果它不是您的文件),您只需在执行 Node 命令之前更改到正确的当前目录即可。适用于 Jenkins 以及命令行:

cd /var/nodejs/app && sudo NODE_ENV=development forever start -a -l logs/forever.log -o logs/output.log -e logs/error.log app.js

(粗体更改的部分)

关于node.js - 使用 Jenkins 时永远无法启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23203807/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com