如何在PM2启动之前要求dotenv / config文件

时间:2019-07-01 08:15:16

标签: node.js pm2

我这样运行节点应用程序:

ID      Found
1       true  (Exists in the table)
2       false (Does'nt exist in the table)
...     ...

我需要使用PM2进行类似操作:

SELECT id, true as "Found" FROM fooTable WHERE id in(1,2,3,4,5...)

我收到下一个错误:node -r dotenv/config dist/app

3 个答案:

答案 0 :(得分:1)

使用node_args

pm2 start --node-args="-r dotenv/config" dist/app.js --name appname

答案 1 :(得分:0)

我制作了一个Shell脚本:

// pm2-start.sh

NODE_ENV=production &&
node -r dotenv/config dist/app

然后我跑了pm2 start pm2-start.sh --name appname

提示我也已经运行:pm2 startup,然后复制了pm2指示运行的命令,以激活通过pm2注册的所有应用程序的自动启动。

然后我运行pm2 save保存自动服务。

注意:pm2分别在服务器帐户之间分别列出应用程序。这意味着在用户A上列出的应用程序将不会在用户B上列出。对于pm2 startup命令而言,这是正确的-应该为每个帐户完成。

希望有帮助。

答案 2 :(得分:0)

这些都不适合我,因为我使用的是生态系统文件和集群模式,它的行为非常奇怪(不像没有集群模式......)。

我在根目录中安装了 dotenv 作为 dev 依赖项(我也使用了 yarn 工作区)。

然后我这样做了:

require('dotenv').config({ path: 'path/to/your/.env' })

module.exports = {
    apps: [
        {
            name: 'app',
            script: 'server/dist/index.js',
            instances: 2,
            exec_mode: 'cluster',
            instance_var: 'APP_INSTANCE_SEQ',
            // listen_timeout: 10000,
            // restart_delay: 10000,
        }
    ]
}