TLDR,您需要添加--workingDir
您的 cronjob 行的路径。
forever -c "node -r dotenv/config" --workingDir app-workdir-path start app.js
之前有很多答案,但没有一个真正解决这个特定的用例。
To run forever https://www.npmjs.com/package/forever with dotenv https://www.npmjs.com/package/dotenv你需要做两件事。
首先我们需要使用 dotenvpreload https://www.npmjs.com/package/dotenv#preload功能,这意味着我们需要永远将节点参数传递给进程。我们可以使用-c COMMAND
旗帜永远有。
第二件事与如何dotenv
包作品。这是源代码的片段:
let dotenvPath = path.resolve(process.cwd(), '.env')
什么是process.cwd()
do?
process.cwd()方法是process模块的内置应用程序编程接口,用于获取node.js进程的当前工作目录。
Meaning dovenv
包想要加载.env
工作目录中的文件。所以为了解决这个问题我们可以使用forever的--workingDir
标志来指定进程的实际工作目录。
最终的命令将如下所示:
forever -c "node -r dotenv/config" --workingDir app-workdir-path start app.js
Where app-workdir-path
是项目目录的绝对路径。