运行 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/bash
。 function
不是 POSIX。如果您不想使用其他 bash 功能,也可以省略 function
。
我还注意到您是从 main 调用 main 的,这会导致重复调用。即使这是有意的,使用循环仍然会更好。 Bash 不支持尾调用优化。
您不需要(也不应该)使用 Heroku 编写自己的启动脚本。这就是 Procfile
的用途。应该这样做:
worker: node index.js
定义了一个 worker
进程类型,它将 运行 node index.js
。然后,只要你有一个 worker
dyno 运行ning,你的脚本应该 运行.
我正在尝试使用 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/bash
。 function
不是 POSIX。如果您不想使用其他 bash 功能,也可以省略 function
。
我还注意到您是从 main 调用 main 的,这会导致重复调用。即使这是有意的,使用循环仍然会更好。 Bash 不支持尾调用优化。
您不需要(也不应该)使用 Heroku 编写自己的启动脚本。这就是 Procfile
的用途。应该这样做:
worker: node index.js
定义了一个 worker
进程类型,它将 运行 node index.js
。然后,只要你有一个 worker
dyno 运行ning,你的脚本应该 运行.