Я экспериментирую с PM2 и, в частности, проверяю возможность объявления приложений узла в файле конфигурации в формате JSON, например:
{
"apps": [
{
"exec_mode": "cluster_mode",
"script": "./server.js",
"name": "proj-0",
"watch": true,
"max_memory_restart": "500G",
"env": {
"NODE_ENV": "development",
"PORT": 3000
},
"error_file": "./logs/proj-0_test.err.log",
"out_file": "./logs/logs/proj-0_test.out.log"
},
{
"exec_mode": "cluster_mode",
"script": "./server2.js",
"name": "proj-1",
"watch": true,
"max_memory_restart": "500G",
"env": {
"NODE_ENV": "development",
"PORT": 3001
},
"error_file": "./logs/proj-1_test.err.log",
"out_file": "./logs/logs/proj-1_test.out.log"
}
]
}
Когда я запускаю pm2 с помощью команды CLI:
pm2 start configuration_test.json
... сначала он запускается нормально, а затем каждую секунду или около того он чередуется между остановкой, остановкой и запуском (когда я отслеживаю его с помощью pm2 monit)
Я проверил журналы ошибок и неоднократно вижу:
RangeError: "port" argument must be >= 0 and < 65536
вот js, содержащиеся на сервере узлов, который я тестирую с этим (server.js и server2.js):
var http = require('http');
var process = require('process');
http.createServer(function(req, res) {
res.writeHead(200);
res.end("hello world. PID: " + process.pid + ". " + process.env.NODE_PORT);
}).listen(process.env.NODE_PORT);
Примечание. Я пробовал как process.env.NODE_PORT, так и process.env.port.
Кроме того, когда я специально устанавливаю порт, используя следующее, и запускаю процесс узла, он работает нормально.
.listen(3000);
Почему назначение порта выглядит НЕдействительным (исходя из того, что я вижу в журнале ошибок)? Что мне нужно изменить, чтобы это работало?
Я использую pm2 версии 2.1.5 и Node.js версии 6.2.2.
NODE_PORT
иport
, но пробовали ли выPORT
? - person david   schedule 21.11.2016