Вот содержимое файла 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?
Как я уже подчеркивал, я запускаю проект на порту 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 установлен и правильно настроен.
Попробуйте запустить next run dev на порту 3003 перед этим
Также почистите кеш под dev tools/application
Любая команда для очистки кеша? Я просто восстанавливаю yarn build
@MartinAJ, вам просто нужно запустить yarn dev -p 3003, чтобы он заработал. Я должен уточнить, что если вы хотите работать на порту 3003 в режиме разработки, в противном случае вам нужно будет сначала создать веб-сайт с помощью yarn run build, а затем запустить yarn start -p 3003. Веб-сайт не зависает, он просто ждет, когда вы посетите веб-сайт для обслуживания, другими словами, он прослушивает входящие запросы, поэтому он выглядит так, как будто он зависает.
Не работает i.stack.imgur.com/kNXoF.png .. Возможно, мне нужно что-то определить в файле конфигурации Nginx о порте 3002
@MartinAJ, нет, он работает отлично, вы должны убедиться, что сам ПОРТ доступен на самом сервере. Другими словами, убедитесь, что ПОРТу разрешены входящие запросы, проверьте настройки брандмауэра.
Вы имеете в виду это? i.stack.imgur.com/GRGz9.png
Точно, но это просто показывает, что есть открытая служба с соответствующими портами, но не показывает, разрешен ли доступ извне (из Интернета). Вы можете попробовать разрешить порт в настройках брандмауэра.
В зависимости от ОС Linux, которую вы используете, вы можете попробовать запустить или установить UFW, а затем весь конкретный порт таким образом, sudo ufw allow 3003/tcp
О .. очень хороший приятель, сработало, спасибо
Не работает на 127.0.0.1:3002 ?
Здесь работает http://37.152.179.101:3002/
Пожалуйста, я добавлю инструкции в ответ, чтобы помочь будущим людям, отметьте это как ответ. Этот раздел комментариев был уничтожен, ха-ха.
Можешь обновить мою, если хочешь
Спасибо, но застрял на этом i.stack.imgur.com/iT84e.png