Файл node.js 404 не найден

var http = require('http'),
fs=require('fs'),
path=require('path'),
host ='127.0.0.1',
port='9001';
var mimes = {
    ".htm":"text/html",
    ".css":"text/css",
    ".js":"text/javascript",
    ".gif":"text/gif",
    ".jpg":"text/jpeg",
    ".png":"text/png"
}
var server = http.createServer(function(req,res){
    var filepath =(req.url==='/')?('./index.htm'):('.'+req.url);
    var contentType = mimes[path.extname(filepath)];
    //check file exists or not
    fs.exists(filepath,function(file_exists){
        if(file_exists)
        {
                res.writeHead(200, {'Content-Type' : contentType});
                var streamFile = fs.createReadStream(filepath).pipe(res);
                streamFile.on('error',function(){
                    res.writeHead(500);
                    res.end();
                })
        }
        else
        {
            res.writeHead(404);
            res.end("sorry we could not find the file you requested");
        }
    })
}).listen(port,host,function(){
console.log('server running on http://'+host+':'+port);
})

В приведенном выше коде мой сервер узлов выдает сообщение, которое запускается в 127.0.0.1:9001, но когда я запускаю его в своем браузере, я сталкиваюсь с "ошибкой 404 файл не найден", что не является упомянутой ошибкой. Также у меня есть файл index.html внутри той же папки этого файла скрипта. Что не так с моим кодом?

2 ответа

Решение

Ваш код отлично работает для меня. У тебя должно быть index.htm файл в той же папке, вы выполняете server.js файл.

Изменить условие if

index.html != index.htm

На самом деле ваш код работает нормально,

Вы можете изменить свой 404

  res.writeHead(404, {"Content-Type": "text/plain"});
  res.end("sorry we could not find the file you requested");

Также посмотрите, что мы установили тип ответа 'text / html'

http://nodejs.org/api/http.html

введите описание изображения здесь

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