У меня есть скрипты 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?