node.js – 如何使用pm2将参数传递给应用程序? - 代码日志

node.js – 如何使用pm2将参数传递给应用程序?

我正在使用pm2启动我的应用程序,但我无法传递参数。我使用的命令是pm2 start app.js – dev。虽然这与永远有效
你可以按照这张票说明:https://github.com/Unitech/pm2/issues/13

虽然如果您通过环境,您可能需要考虑利用环境变量。通过这样,您可以创建一个可以通过process.env。*的环境中任何进程访问的变量。

所以你有一个配置文件config.json:

{
   "dev": {
        "db": {
            "hosts":["localhost"],
            "database": "api"
        },
        "redis": {
            "hosts": ["localhost"]
        }
   },
   "staging": {
        "db": {
            "hosts":["1.1.1.1"],
            "database": "api"
        },
        "redis": {
            "hosts": ["2.2.2.2"]
        }
   },
   "production": {
        "db": {
            "hosts":["1.1.1.1", "1.1.1.2", "1.1.1.3"],
            "database": "api"
        },
        "redis": {
            "hosts": ["2.2.2.2", "2.2.2.3"]
        }
   }
}

然后你导入你的配置:

var config=require('./config.json')[process.env.NODE_ENV || 'dev'];

db.connect(config.db.hosts, config.db.database);

那么你可以通过shell在你的环境中设置变量:

export NODE_ENV=staging
pm2 start app.js

环境变量将持续与会话一样长。所以你必须将它设置在该用户的〜/ .bashrc文件中,以使该变量持续存在。这将在每个会话中设置变量。

PM2有一个deploy system,它允许您每次在应用程序被守护进程之前设置一个环境变量。这就是POSIX系统中的守护程序通常采用参数,因为这些参数不会随着进程而丢失。考虑到你的情况,这可能并不重要,但它是一个很好的做法。

此外,您应该考虑在本地停止/启动,并重新启动(如果在群集模式下),以防止在生产中停机。

http://stackoverflow.com/questions/28980307/how-to-pass-arguments-to-app-using-pm2

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:node.js – 如何使用pm2将参数传递给应用程序?