Node js как запустить сервер
Перейти к содержимому

Node js как запустить сервер

  • автор:

как запустить сервер node js

Для запуска сервера Node.js нужно выполнить несколько шагов:

  1. Установить Node.js на компьютер, если он еще не установлен. Скачать установщик можно на официальном сайте Node.js.
  2. Создать файл с расширением .js , в котором будет содержаться код для запуска сервера. Например, создадим файл server.js .
  3. В файле 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!».

  1. Запустить сервер нужно в командной строке (терминале) из папки, где находится файл server.js . Например, если файл находится в папке myproject , то нужно перейти в эту папку командой cd myproject , а затем запустить сервер командой node server.js .
  2. Если все настроено правильно, то в консоли должно появиться сообщение «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 :

Обработка запроса в Node.js

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);

Запустим файл и обратимся в браузере к приложению:

Отправка ответа в Node.js

Если предстоит отправить довольно большой ответ, то мы можем несколько раз вызвать метод 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

Однако опять же отмечу, что рамках специальных фреймворков, которые работают поверх 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

  • Node.js
  • +1 ещё

Как в предварительном запросе передать переменной $ значение полей?

  • 1 подписчик
  • 18 часов назад
  • 45 просмотров

Как запустить Node.js приложение

Если вы устанавливали NodeJS с помощью стандартного установщика с официального сайта, то так:

  1. Открываем консоль cmd
  2. Переходим в папку Z:\home\localhost\www\server командой cd Z:\home\localhost\www\server
  3. Запускаем сервер 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

  1. Устанавливаете NodeJS
  2. Создаете файл mywebserver.js
  3. Добавляете в содержание 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 установить вторым ОС)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *