PM2 запускается на неправильном порту для приложения NextJS

У меня есть скрипты package.json следующим образом:

"scripts": {
  "build": "NODE_ENV=production next build",
  "startLocal": "NODE_ENV=production node server.js",
  "startServer": "NODE_ENV=production pm2 start server.js",
}

Теперь мое приложение использует NextJS с настраиваемым сервером Express. server.js выглядит примерно так:

const { parse } = require('url');
const express = require('express');
const next = require('next');

const env = process.env.NODE_ENV || 'development';
const port = parseInt(process.env.PORT, 10) || 3000;
const app = next({ dev: env === 'development' });
const handle = app.getRequestHandler();

app.prepare().then(() => {
  const server = express();

  server.get('*', (req, res) => {
    handle(req, res, parse(req.url, true));
  });

  server.listen(port, (err) => {
    if (err) throw err;
    console.info(`> Ready on port ${port}`);
  });
});

Чтобы создать свое приложение, я сначала запускаю npm run build. Затем я запускаю приложение на определенном порту с номером PORT=3030 npm run startLocal. Это работает, как ожидалось. Однако, когда я использую сценарий для запуска PM2 PORT=3030 npm run startServer, он не выбирает номер порта и запускается на порту 3000.

Почему это? Есть ли что-то еще, что мне нужно добавить к команде PM2 в моем скрипте package.json?


person CaribouCode    schedule 20.08.2018    source источник


Ответы (1)


pm2 понимает только переменную среды NODE_PORT (не PORT), поэтому я думаю, вам нужно использовать PORT=3030 NODE_PORT=3030 npm run startServer, чтобы вы передавали его как next, так и pm2.

person Ramo    schedule 23.08.2018
comment
А как насчет другой переменной, например API_KEY? - person CaribouCode; 23.08.2018
comment
если я вас правильно понимаю, вы можете добавить столько переменных среды, сколько вам нужно, перед выполнением скрипта (и это то, что вы делаете с помощью npm run startServer), чтобы вы могли добавить API_KEY=XXXX PORT=3030 NODE_PORT=3030 npm run startServer - person Ramo; 24.08.2018