Как запустить проект Next.js на определенном порту?

Вот содержимое файла server.js:

const express = require("express");
const path = require("path");
const next = require("next");

const dev = false;
const app = next({ dev });
const handle = app.getRequestHandler();

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

    // requests to /service-worker.js
    server.get(
      "/service-worker.js",
      express.static(path.join(__dirname, ".next"))
    );

    // all other requests
    server.get("*", (req, res) => {
      return handle(req, res);
    });
    server.listen(3002, (err) => {                            // this
      if (err) throw err;
      console.info("> Ready on http://localhost:3002");        // this
    });
  })
  .catch((ex) => {
    console.error(ex.stack);
    process.exit(1);
  });

Как я уже отметил, я запускаю проект на порту 3002. Но после запуска forever start server.js http://<ip>:3002 по-прежнему недоступен.

Кроме того, когда я запускаю yarn start в корне проекта, он говорит:

Порт 3000 уже используется.

Почему его не волнует порт, который я указал внутри server.js?

Конечные и Readonly классы в PHP
Конечные и Readonly классы в PHP
В прошлом, когда вы не хотели, чтобы другие классы расширяли определенный класс, вы могли пометить его как final.
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
От React к React Native: Руководство для начинающих по разработке мобильных приложений с использованием React
Если вы уже умеете работать с React, создание мобильных приложений для iOS и Android - это новое приключение, в котором вы сможете применить свои...
БЭМ: Конвенция об именовании CSS
БЭМ: Конвенция об именовании CSS
Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и...
Революционная веб-разработка ServiceNow
Революционная веб-разработка ServiceNow
В быстро развивающемся мире веб-разработки ServiceNow для достижения успеха крайне важно оставаться на вершине последних тенденций и технологий. По...
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Как добавить SEO(Search Engine Optimization) в наше веб-приложение и как это работает?
Заголовок веб-страницы играет наиболее важную роль в SEO, он помогает поисковой системе понять, о чем ваш сайт.
Конфигурация Jest в angular
Конфигурация Jest в angular
В этой статье я рассказываю обо всех необходимых шагах, которые нужно выполнить при настройке jest в angular.
1
0
62
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
Как я уже подчеркивал, я запускаю проект на порту 3002.

Это не то, что вы сделали, вы просто заставили свой сервер прослушивать ПОРТ 3002, но когда вы запустите yarn start, проект запустится на порту 3000 по умолчанию.

Вы можете изменить это в своем файле package.json следующим образом:

"scripts": {
//...
"dev": "next dev -p 3002",
"start": "next start -p 3002",
},

Вам также необходимо проверить, прослушивается ли сам порт на сервере (lsof | grep -i PORT), а затем включить доступ в брандмауэре. Используйте следующую команду, чтобы включить доступ в брандмауэре: sudo ufw allow 3002/tcp

Просто убедитесь, что ufw установлен и правильно настроен.

Спасибо, но застрял на этом i.stack.imgur.com/iT84e.png

Martin AJ 13.02.2023 22:28

Попробуйте запустить next run dev на порту 3003 перед этим

Ahmed Sbai 13.02.2023 22:33

Также почистите кеш под dev tools/application

Ahmed Sbai 13.02.2023 22:36

Любая команда для очистки кеша? Я просто восстанавливаю yarn build

Martin AJ 13.02.2023 22:38

@MartinAJ, вам просто нужно запустить yarn dev -p 3003, чтобы он заработал. Я должен уточнить, что если вы хотите работать на порту 3003 в режиме разработки, в противном случае вам нужно будет сначала создать веб-сайт с помощью yarn run build, а затем запустить yarn start -p 3003. Веб-сайт не зависает, он просто ждет, когда вы посетите веб-сайт для обслуживания, другими словами, он прослушивает входящие запросы, поэтому он выглядит так, как будто он зависает.

Abdulrahman Ali 13.02.2023 22:44

Не работает i.stack.imgur.com/kNXoF.png .. Возможно, мне нужно что-то определить в файле конфигурации Nginx о порте 3002

Martin AJ 13.02.2023 22:47

@MartinAJ, нет, он работает отлично, вы должны убедиться, что сам ПОРТ доступен на самом сервере. Другими словами, убедитесь, что ПОРТу разрешены входящие запросы, проверьте настройки брандмауэра.

Abdulrahman Ali 13.02.2023 22:49

Вы имеете в виду это? i.stack.imgur.com/GRGz9.png

Martin AJ 13.02.2023 22:51

Точно, но это просто показывает, что есть открытая служба с соответствующими портами, но не показывает, разрешен ли доступ извне (из Интернета). Вы можете попробовать разрешить порт в настройках брандмауэра.

Abdulrahman Ali 13.02.2023 22:56

В зависимости от ОС Linux, которую вы используете, вы можете попробовать запустить или установить UFW, а затем весь конкретный порт таким образом, sudo ufw allow 3003/tcp

Abdulrahman Ali 13.02.2023 22:58

О .. очень хороший приятель, сработало, спасибо

Martin AJ 13.02.2023 22:58

Не работает на 127.0.0.1:3002 ?

Ahmed Sbai 13.02.2023 22:59

Здесь работает http://37.152.179.101:3002/

Martin AJ 13.02.2023 23:00

Пожалуйста, я добавлю инструкции в ответ, чтобы помочь будущим людям, отметьте это как ответ. Этот раздел комментариев был уничтожен, ха-ха.

Abdulrahman Ali 13.02.2023 23:04

Можешь обновить мою, если хочешь

Ahmed Sbai 13.02.2023 23:05

Другие вопросы по теме