Основная веб-страница хостинга Node.JS Ошибка: ENOENT

Новичок в node.js и следовал базовому руководству по ссылке ниже. https://www.tutorialspoint.com/nodejs/nodejs_web_module.htm

var http = require('http');
var fs = require('fs');
var url = require('url');

// Create a server
http.createServer( function (request, response) {  
   // Parse the request containing file name
   var pathname = url.parse(request.url).pathname;

   // Print the name of the file for which request is made.
   console.log("Request for " + pathname + " received.");

   // Read the requested file content from file system
   fs.readFile(pathname.substr(1), function (err, data) {
      if (err) {
         console.log(err);
         // HTTP Status: 404 : NOT FOUND
         // Content Type: text/plain
         response.writeHead(404, {'Content-Type': 'text/html'});
      }else {   
         //Page found     
         // HTTP Status: 200 : OK
         // Content Type: text/plain
         response.writeHead(200, {'Content-Type': 'text/html'});    

         // Write the content of the file to response body
         response.write(data.toString());       
      }
      // Send the response body 
      response.end();
   });   
}).listen(8081);

// Console will print the message
console.log('Server running at http://127.0.0.1:8081/');

Создал 2 файла index.html и server.js, полностью идентичных посту. Затем, когда я пытаюсь запустить его с

узел server.js

Сообщение об ошибке не отображается, но когда я пытаюсь получить доступ к странице в браузере, она не подключается, и в консоли отображается ошибка.

Любая помощь будет высоко оценен.

Сервер работает на http://127.0.0.1:8081/

Запрос / получен.

{Ошибка: ENOENT: такого файла или каталога нет, открыть '' errno: -2, код: 'ENOENT', системный вызов: 'open', путь: '' }

1 ответ

Решение

В данном коде у вас есть:

// Print the name of the file for which request is made.
console.log("Request for " + pathname + " received.");

// Read the requested file content from file system
fs.readFile(pathname.substr(1), function (err, data) {

Потому что путь / pathname.substr(1) приведет к пустой строке. И поскольку у вас нет файла без имени, fs.readFile не находит файл для чтения, что приводит к ENOENT ошибка.

Данный код автоматически не интерпретирует пустую строку как index.html,

Так что вы либо должны использовать http://127.0.0.1:8081/index.html в браузере. Или измените логику кода, чтобы интерпретировать пустую строку как index.html,

Другие вопросы по тегам