как запустить сервер node js
Для запуска сервера Node.js нужно выполнить несколько шагов:
- Установить Node.js на компьютер, если он еще не установлен. Скачать установщик можно на официальном сайте Node.js.
- Создать файл с расширением .js , в котором будет содержаться код для запуска сервера. Например, создадим файл server.js .
- В файле server.js нужно написать код для создания сервера. Вот простой пример:
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n'); >); server.listen(port, hostname, () => console.log(`Server running at http://$hostname>:$port>/`); >);
Этот код создает сервер на локальном хосте (127.0.0.1) и порту 3000. Когда сервер запущен, он будет отвечать на любые запросы с сообщением «Hello, World!».
- Запустить сервер нужно в командной строке (терминале) из папки, где находится файл server.js . Например, если файл находится в папке myproject , то нужно перейти в эту папку командой cd myproject , а затем запустить сервер командой node server.js .
- Если все настроено правильно, то в консоли должно появиться сообщение «Server running at http://127.0.0.1:3000/ «, а в браузере можно открыть страницу по адресу http://127.0.0.1:3000/ и увидеть сообщение «Hello, World!».
Сервер
Для работы с сервером и протоколом http в Node.js используется модуль http.
Чтобы создать сервер, следует вызвать метод http.createServer() :
const http = require("http"); http.createServer().listen(3000);
Метод createServer() возвращает объект http.Server . Но чтобы сервер мог прослушивать и обрабатывать входящие подключения, у объекта сервера необходимо вызвать метод listen() , в который в качестве параметра передается номер порта, по которому запускается сервер.
Для обработки подключений в метод createServer можно передать специальную функцию:
const http = require("http"); http.createServer(function(request, response)< response.end("Hello world!"); >).listen(3000);
Эта функция принимает два параметра:
- request : хранит информацию о запросе
- response : управляет отправкой ответа
Request
Параметр request позволяет получить информацию о запросе и представляет объект http.IncomingMessage . Отметим некоторые основные свойства этого объекта:
- headers : возвращает заголовки запроса
- method : тип запроса (GET, POST, DELETE, PUT)
- url : представляет запрошенный адрес
Например, определим следующий файл app.js:
var http = require("http"); http.createServer(function(request, response)< console.log("Url: " + request.url); console.log("Тип запроса: " + request.method); console.log("User-Agent: " + request.headers["user-agent"]); console.log("Все заголовки"); console.log(request.headers); response.end(); >).listen(3000);
Запустим его и обратимся в браузере по адресу http://localhost:3000/index.html :
Response
Параметр response управляет отправкой ответа и представляет объект http.ServerResponse . Среди его функциональности можно выделить следующие методы:
- statusCode : устанавливает статусный код ответа
- statusMessage : устанавливает сообщение, отправляемое вместе со статусным кодом
- setHeader(name, value) : добавляет в ответ один заголовок
- write : пишет в поток ответа некоторое содержимое
- writeHead : добавляет в ответ статусный код и набор заголовков
- end : сигнализирует серверу, что заголовки и тело ответа установлены, в итоге ответ отсылается клиента. Данный метод должен вызываться в каждом запросе.
Например, изменим файл app.js следующим образом:
const http = require("http"); http.createServer(function(request, response)< response.setHeader("UserId", 12); response.setHeader("Content-Type", "text/html; charset=utf-8;"); response.write("hello world
"); response.end(); >).listen(3000);
Запустим файл и обратимся в браузере к приложению:
Если предстоит отправить довольно большой ответ, то мы можем несколько раз вызвать метод write() , последовательно оправляя в исходящий поток каждый кусочек информации. Например, отправим код более менее полноценной веб-страницы:
const http = require("http"); http.createServer(function(request, response)< response.setHeader("Content-Type", "text/html"); response.write(""); response.write(""); response.write(""); response.write("Hello Node.js "); response.write(""); response.write(""); response.write("Привет миг
"); response.write(""); response.end(); >).listen(3000);
Маршрутизация
По умолчанию Node.js не имеет встроенной системы маршрутизации. Обычно она реализуется с помощью специальных фреймворках типа Express, о котором речь пойдет в следующей главе. Однако если необходимо разграничить простейшую обработку пары-тройки маршрутов, то вполне можно использовать для этого свойство url объекта Request. Например:
const http = require("http"); http.createServer(function(request, response)< response.setHeader("Content-Type", "text/html; charset=utf-8;"); if(request.url === "/home" || request.url === "/")< response.write("Home
"); > else if(request.url == "/about")< response.write("About
"); > else if(request.url == "/contact")< response.write("Contacts
"); > else< response.write("Not found
"); > response.end(); >).listen(3000);
В данном случае обрабатываются три маршрута. Если идет обрашение к корню сайта или по адресу localhost:3000/home , то пользователю выводится строка «Home». Ели обращение идет по адресу localhost:3000/about , то пользователю в браузере отображается строка About и так далее. Если запрошенный адрес не соответствует ни одному маршруту, то выводится заговлок «Not Found».
Однако опять же отмечу, что рамках специальных фреймворков, которые работают поверх Node.js, например, Express, есть более удобные способы для обработки маршрутов, которые нередко и используются.
Переадресация
Переадресация предполагает отправку статусного кода 301 (постоянная переадресация) или 302 (временная переадресация) и заголовка Location , который указывает на новый адрес. Например, выполним переадресацию с адреса localhost:3000/ на адрес localhost:3000/newpage
const http = require("http"); http.createServer(function(request, response) < response.setHeader("Content-Type", "text/html; charset=utf-8;"); if(request.url === "/")< response.statusCode = 302; // временная переадресация // на адрес localhost:3000/newpage response.setHeader("Location", "/newpage"); >else if(request.url == "/newpage") < response.write("New address"); >else < response.statusCode = 404; // адрес не найден response.write("Not Found"); >response.end(); >).listen(3000);
Как запустить сервер node js на хостинге?
У меня есть проект, написанный на ангуляре и сервер, написанный на node.js. Я бы хотела опубликовать проект на хостинге, но не знаю, как сделать так, чтобы запускался сервер. Сейчас я его запускаю во втором окне терминала командой node server.ts. Что мне нужно сделать, чтобы сервер запускался на хостинге?
- Вопрос задан более трёх лет назад
- 2420 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 2
Арендовать сервер, установить ubuntu, node, nginx, поставить pm2, который будет запускать ваш скрипт, настроить nginx на проксирование запроса с вашего домена на поднятую ноду, залить файлы проекта, сделать npm i и запускать.
Погуглите туториалы. Тут возни на полчаса максимум. На digitalocean есть отличные гайды по сетапу всего этого. Там же и сервер можно арендовать.
Ответ написан более трёх лет назад
Комментировать
Нравится 2 Комментировать
Альберт Комаров @KomaroffAlbert
Для запуска скриптов nodejs на сервере рекомендуется использовать forever
https://www.npmjs.com/package/forever
В этом случае процесс не завершиться при закрытии окна консоли, т.к. запускается в отдельном демоне.
Также forever перезапускает скрипт в случае его падения. По умолчанию делает 5 попыток запуска с интервалом в 1 сек. Но это можно настроить.
Ответ написан более трёх лет назад
Forever устарел. Рекомендуется, как раз, pm2.
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Node.js
- +1 ещё
Как в предварительном запросе передать переменной $ значение полей?
- 1 подписчик
- 18 часов назад
- 45 просмотров
Как запустить Node.js приложение
Если вы устанавливали NodeJS с помощью стандартного установщика с официального сайта, то так:
- Открываем консоль cmd
- Переходим в папку Z:\home\localhost\www\server командой cd Z:\home\localhost\www\server
- Запускаем сервер node server.js
Отслеживать
17.9k 5 5 золотых знаков 48 48 серебряных знаков 85 85 бронзовых знаков
ответ дан 27 мар 2013 в 18:17
andreycrane andreycrane
711 3 3 серебряных знака 11 11 бронзовых знаков
Я node.exe кинул прямо в директорию «www\server» и запускаю прямо так: > node js/server.js.
28 мар 2013 в 2:30
Выдал ошибку (как обычно): module.js:340 throw err; Error: Cannot find module ‘C:\Windows\system32\server.js’ и т.д.
28 мар 2013 в 2:48
Попробуй >node .\server.js
28 мар 2013 в 7:18
C:\Windows\system32\server.js как-бы намекает на то, что вы не сделали cd
28 мар 2013 в 9:13
cd произошло, не произошла смена диска. еще надо d: до или после cd .
7 апр 2013 в 0:21
- Устанавливаете NodeJS
- Создаете файл mywebserver.js
- Добавляете в содержание mywebserver.js
const http = require('http'); const hostname = 'localhost'; const port = 8080; http.createServer((req, res) => < res.writeHead(200, < 'Content-Type': 'text/plain' >); res.end('Hello World\n'); >).listen(port, hostname, () => < console.log('Server running at http://$:$/'); >);
Отслеживать
51.2k 86 86 золотых знаков 266 266 серебряных знаков 505 505 бронзовых знаков
ответ дан 8 ноя 2016 в 11:36
131 2 2 бронзовых знака
1.Устанавливаем nodeJS 2.запускаем cmd и вводим node --version, там должно вывестись информация о версии нод,если есть значит вы правильно установили нод 3.переходим к директории где лежит ваш скрипт server.js: > cd Z:\home\localhost\www\ > node server.js
PS: но все же лучше установить Linux(что я и сделал недавно;)), там более удобно работать с терминалом. можно Linux установить вторым ОС)