Как работает node.js сервер?

Здравствуйте
есть файл test.js, установлен nodejs сервер
файл расположен в public_html
при обращении к нему через браузер - он не интерпретируется, а выводится текстом
я так полагаю он вообще не должен быть в public_html?
из консоли node test.js обрабатывается
подскажите как вообще работает эта концепция, куда помещать исполняемый файл js и как запускается интерпретатор?
  • Вопрос задан
  • 105 просмотров
Решения вопроса 1
nowm
@nowm
Команда node — это интерпретатор. Сам NodeJS — это не сервер, а среда исполнения, которая, в числе прочего, даёт возможность писать на JS web-серверы, используя встроенные модули NodeJS. Для того, чтобы сделать web-сервер, нужно написать такой файл test.js, в котором будет запускаться сервер с определёнными параметрами и определённым портом. Затем этот сервер запускается командой node test.js. Если вы будете напрямую открывать файл test.js из браузера, это не сработает так, как вы хотите, так что да — он вообще не должен быть в public_html.

Пример test.js.

// Импортируется встроенный в NodeJS модуль http,
// который даёт возможность создать web-сервер
const http = require('http');

/**
 * Когда делается запрос к этому серверу, вызывается эта функция
 *
 * @param {module:http.IncomingMessage} request
 * @param {module:http.ServerResponse} response
 */
function requestProcessor(request, response) {
    switch (request.url) {
        case '/':
            response.end('Запрошена главная страница');
            return;
        case '/500':
            response.statusCode = 500;
            response.end('По просьбам посетителей — ошибка 500');
            return;
    }

    response.end(`Не знаю, как обработать адрес ${request.url}`);
}

// Создаётся сам сервер, в качестве параметра передаётся функция, которая обслуживает запросы
const server = http.createServer(requestProcessor);

// Созданный сервер запускается
server.listen(8888, function() {
    console.log('Сервер запущен на 8888-м порту. Откройте http://localhost:8888/ для проверки');
});


В одном JS-файле можно запустить даже больше одного сервера — это всё управляется кодом на JS, а сам NodeJS только помогает этот код запустить.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы