运行 bash Heroku 上的文件

Running bash file on Heroku

我正在尝试使用 Heroku 上的 bash 文件启动我的 Discord 机器人,因此该机器人在遇到错误时会自动重启。

我在 Heroku 上的工作人员是:chmod a+x run.sh

run.sh 文件:

#!/bin/sh
function main(){
node .
echo "The bot is crashed, restarting now..."
main
}
main

编辑:我将工作人员更改为 bash run.sh 并将 run.sh 文件限制为:

#!/bin/bash
node index.js
echo "The bot is online."

现在我收到了这样的回复:Error: Cannot find module '/app/index.js

尝试将 header 更改为 /bin/bashfunction 不是 POSIX。如果您不想使用其他 bash 功能,也可以省略 function

我还注意到您是从 main 调用 main 的,这会导致重复调用。即使这是有意的,使用循环仍然会更好。 Bash 不支持尾调用优化。

您不需要(也不应该)使用 Heroku 编写自己的启动脚本。这就是 Procfile 的用途。应该这样做:

worker: node index.js

定义了一个 worker 进程类型,它将 运行 node index.js。然后,只要你有一个 worker dyno 运行ning,你的脚本应该 运行.