Запуск backend и frontend на nodejs
Решил запустить небольшое nodejs/vuejs приложение форума из этого репозитория: https://github.com/marcelobbfonseca/forum После всех манипуляций (npm install / правка конфиг файла) пытаюсь запустить приложение. Если запускать из корневой директории (npm run dev) запускается бэкенд на localhost:3000. Если запускать из поддиректории frontend (npm run serve) запускается фронтенд на localhost:8080. Полагаю, что это не совсем правильный способ запуска подобных приложений, поскольку в самом репозитории все запросы из фронтенда в бэкенд идут относительными путями (/api/v1/settings, например). Иными словами, как правильно нужно запускать подобные приложения на nodejs, чтобы фронт и бек работали на одном хосте?
Отслеживать
задан 10 июн 2019 в 18:54
morganchees morganchees
315 4 4 серебряных знака 11 11 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Нужно в начале собрать фронтенд: cd frontend && npm install && npm run build
Затем нужно запустить бек: в корне проекта(не frontend , а всего проекта) нужно запустить сервер через node server.js
Сервер будет запущен на порту из конфига (3000, если не указан).
Теперь о том как это работает. После запуска npm run build фронт собирается в статику — frontend/dist . После запуска сервера он будет перенаправлять все запросы на фронт (кроме серверных вида /api/*** ), за это отвечает строка в server.js :
app.get('*', (req, res) => < res.sendFile(path.join(__dirname, 'frontend', 'dist', 'index.html')) >)
Как настроить локальный сервер для тестирования?
Эта статья объясняет как установить простой локальный тестовый сервер на вашем компьютере, а так же основы его использования.
| Требования: | Сначала вам необходимо изучить как работает интернет, а также что такое веб-сервер (en-US) . |
|---|---|
| Цель: | Вы научитесь как устанавливать локальный тестовый сервер. |
Локальные и удалённые файлы
На протяжении всего обучения, вы будете открывать примеры непосредственно в браузере — двойным кликом по HTML файлу, перетаскиванием файла в окно браузера, или через меню File > Open. и указывая необходимый HTML файл. Существует множество способов как это сделать.
Если веб-адрес начинается с file:// в котором далее прописан путь к файлу на вашем локальном жёстком диске, значит используется локальный файл. В противоположность этому, если вы откроете на просмотр один из наших примеров, расположенных на GitHub (или пример расположенный на любом другом удалённом сервере), веб-адрес будет начинаться с http:// или https:// , что означает что файл был получен через HTTP.
Проблемы тестирования локальных файлов
Некоторые примеры могут не запуститься, если вы попробуете открыть их как локальные файлы. Это может произойти по нескольким причинам, самые распространённые из которых:
- Они содержат асинхронные запросы. Некоторые браузеры (включая Chrome) не будут запускать асинхронные запросы (см. Fetching data from the server), если вы просто запускаете пример из локального файла. Это связано с ограничениями безопасности (для получения дополнительной информации о безопасности в Интернете, ознакомьтесь с Website security).
- Они имеют серверный язык. Серверные языки (например, PHP или Python) требуют специального сервера для интерпретации кода и предоставления результатов.
Запуск простого локального HTTP сервера
Чтобы обойти проблему асинхронных запросов, нам нужно протестировать такие примеры, запустив их через локальный веб-сервер. Один из самых простых способов сделать это для наших целей — использовать модуль SimpleHTTPServer Python.
Для этого нужно:
- Установить Python. Если вы пользуетесь Linux или Mac OS X, всё уже готово в вашей системе. Если вы пользователь Windows, вы можете скачать установочный файл с домашней страницы Python:
- Зайдите на python.org
- В секции загрузок, выберите линк для Python «3.xxx».
- Внизу страницы выберите Windows x86 executable installer и скачайте его.
- После загрузки файла запустите его.
- На первой странице инсталлятора выберите чекбокс «Add Python 3.xxx to PATH».
- Нажмите Install, затем нажмите Close когда установка закончится.
- Откройте командную строку (Windows)/ (OS X/Linux). Для проверки установки Python введите следующую команду:
# include the directory name to enter it, for example cd Desktop # use two dots to jump up one directory level if you need to cd ..
# If Python version returned above is 3.X python -m http.server # If Python version returned above is 2.X python -m SimpleHTTPServer
Примечание: . Если у вас уже есть что-то на порту 8000, вы можете выбрать другой порт, запустив команду сервера, за которой следует альтернативный номер порта, например: python -m http.server 7800 (Python 3.x) или python -m SimpleHTTPServer 7800 (Python 2.x). Затем вы можете получить доступ к своему контенту на localhost: 7800 .
Запуск серверных языков локально
Модуль Python SimpleHTTPServer (python 2.0) http.server (python 3.0) полезен, но он не знает, как запускать код, написанный на таких языках, как Python, PHP или JavaScript. Чтобы справиться с этим, вам понадобится нечто большее — именно то, что вам нужно, зависит от языка сервера, который вы пытаетесь запустить. Вот несколько примеров:
- Для запуска кода на стороне сервера Python вам необходимо использовать веб-инфраструктуру Python. Вы можете узнать, как использовать структуру Django, прочитав Django Web Framework (Python). Flask также является хорошей (чуть менее тяжёлой) альтернативой Django. Чтобы запустить это, ознакомьтесь с install Python/PIP, а затем установите Flask с помощью pip3 install flask . На этом этапе вы сможете запустить примеры Python Flask, используя, например, python3 python-example.py , затем перейдя на localhost: 5000 в свой браузер.
- Чтобы запустить серверный код Node.js (JavaScript), вам нужно использовать Node.js или фреймворк, построенный поверх него. Express — хороший выбор — см. Express Web Framework (Node.js/JavaScript).
- Чтобы запустить PHP-серверный код, вам понадобится настройка сервера, которая может интерпретировать PHP. Хорошими вариантами для локального тестирования PHP являются MAMP (Mac и Windows), AMPPS (Mac, Windows, Linux) и LAMP (Linux, Apache, MySQL и PHP / Python / Perl). Это полные пакеты, которые создают локальные настройки, позволяющие запускать базы данных Apache, PHP и MySQL.
Found a content problem with this page?
- Edit the page on GitHub.
- Report the content issue.
- View the source on GitHub.
This page was last modified on 3 авг. 2023 г. by MDN contributors.
Node.JS: Why is my connection to localhost:3000 refused?
and also the command line sequence you used to start node, for example node start . You did run that, right?
Apr 11, 2017 at 12:24
Connection refused though? It’s possible. This is the error message in chrome when the server isn’t running: This site can’t be reached \n localhost refused to connect. Which browser and what error message more exactly?
Apr 11, 2017 at 12:27
you should consider adding more information
Apr 11, 2017 at 12:40
no i didn’t the instructions i received in the book didn’t tell me that, now i’m unable to however since the the express server is in development mode.
Apr 11, 2017 at 13:05
2 Answers 2
In following the instructions to set up the server on the command line, install the dependencies, and navigate to localhost:3000
It seems that you didn’t start the server.
Somewhere between installing the dependencies and navigating to the URL you need to actually start the server if you want it to serve the request.
answered Apr 11, 2017 at 12:24
108k 30 30 gold badges 202 202 silver badges 178 178 bronze badges
Check that there is no copy of the server running in the background, or that another app is using the port currently. (Your firewall show allow you to see which app has been allocated to that port) Because nodejs requires it to be the only app on that port running on your computer.
Also try a different port maybe?
answered Apr 11, 2017 at 12:28
Ajani Bilby Ajani Bilby
112 11 11 bronze badges
- javascript
- node.js
-
The Overflow Blog
Related
Hot Network Questions
Subscribe to RSS
Question feed
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.11.15.1019
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Запуск локального сайта через сервер node?
Сразу извиняюсь за такие смешные вопросы, но раньше с серверами работать не приходилось и, объясните пожалуйста, как запустить мой локальный сайт через сервер node. У меня есть директория с файлами index.html и server.js с кодом
var http = require("http"); http.createServer(function(request, response) < response.writeHead(200, ); response.write("Hello World 11"); response.end(); >).listen(8888);
Я запустил сервер в этой директории и все работает, но как теперь в этом сервере открыть мой файл index.html ?
- Вопрос задан более трёх лет назад
- 11153 просмотра
Комментировать
Решения вопроса 2
console.log(`You’re pulling my leg, right?`);
как теперь в этом сервере открыть мой файл
Это называется serve static content. По умолчанию такой функциональности нет, но сделать очень просто: по соответствующему запросу читать файл и отдавать его через response.write. Чтобы было еще проще и с плюшками, есть пакет serve-static, там в примерах все описано.
Ну или чтоб совсем код не писать, можно так: https://www.npmjs.com/package/static-server
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать

Androguide @Androguide
TeamLead AG
Вам потребуется express для простоты работы.
Устанавливаем
npm i express —save
Код сервера server.js:
var app = require('express')(); var http = require('http').Server(app); app.get('/', function(req, res)< res.sendfile('index.html'); >); http.listen(3000, function()< console.log('listening on *:3000'); >);
Запускаем сервер:
node server.js
По адресу localhost:3000 будет ваш сайт.
ищите информацию по nodejs express
