Je dois pouvoir démarrer l'application ci-dessous avec pm2 mais je ne sais pas comment démarrer avec pm2.
node --expose-gc bin/www arg1 arg2 arg3
Je connais --node-args
mais je pense que ce n'est que pour --expose-gc.
Après quelques recherches, j'ai découvert que ce que je cherchais, c'était le double tiret sur Linux.
Le code normal,
node --expose-gc bin/www arg1 arg2 arg3
Le même code utilisant pm2
pm2 start bin/www --node-args="--expose-gc" -- arg1 arg2 arg3
Tous les arguments v8 que vous devez mettre dans --node-args
et tous les arguments de scripts à récupérer à partir de process.argv
doivent être placés après le double tiret.
J'espère qu'à l'avenir, ils implémenteront quelque chose link --script-args = "arg1 arg2 arg3". Serait très gentil pour ceux qui ne sont pas des experts de Linux.
Vous pouvez également créer un fichier json de déclaration d'application dans lequel vous spécifiez la clé args
. Regardez documentation sur le site PM2.
Exemple de fichier pm2.json
:
{
"apps" : [{
"name" : "appname",
"script" : "app.js",
"args" : ["-s", "123"],
"node_args" : "--harmony",
"merge_logs" : true,
"cwd" : "/this/is/a/path/to/start/script",
"env": {
"NODE_ENV": "production"
}
}]
}
Et lancez-le comme suit:
$ pm2 start pm2.json
vous pouvez ajouter n'importe quel argument personnalisé après -x --
,
pm2 start app.js -x -- --prod
et argument de noeud en tant que --node-args="--harmony"
pm2 start app.js --node-args="--harmony"
Tous les deux
pm2 start app.js --node-args="--harmony" -x -- --prod
Je devais exposer-gc dans mon processus pm2 process.js donc j'ai eu le faire ce qui suit:
{
"apps" : [
{
"name" : "app",
"script" : "bin/www",
"instances" : 2,
"exec_mode" : "cluster",
"watch" : false,
"node_args" : "--expose-gc",
"env" : {"NODE_ENV": "development"}
}
]
}