не удается выдать ошибку на стороне клиента в nodejs

#javascript #node.js #json #filesystems

#javascript #node.js #json #файловые системы

Вопрос:

Все, в настоящее время я изучаю файловую систему в node js. code ниже

 var http = require('http')
var fs = require('fs')
http.createServer((req, res)=>{
    fs.readFile('demofile1.html', (err,data)=>{
        if (err){
            res.writeHead(404, {'content-type':'text/html'})
            return res.end('404 Not Found')
        }
        res.writeHead(200, {'content-type': 'text/html'})
        res.write(data)
        return res.end()
    })
}).listen(80)
 

когда я нажимаю «localhost» в браузере, он работает нормально. Но когда я намеренно допускаю ошибку (предположим, ввод ‘localhost // anything’ в браузере), я не получаю никакой ошибки. почему это так???
Я не хочу показывать «404 не найдено» на стороне клиента, если возникает какая-либо ошибка. Можете ли вы мне помочь???

Комментарии:

1. Чего вы ожидали? Вы безоговорочно отправляете "./demofile1.html" независимо от содержимого запроса.

2. err Переменная — это любые ошибки при чтении файла, она не имеет ничего общего с запросом.

3. сначала я использую «demofile1.html » , но это тоже не работает . Тогда я попробовал это как «./demofile1.html »

Ответ №1:

потому что ваша функция ‘fs.readfile’ всегда работает.

на это не влияет url. потому что вы не пишете, как показано ниже.

 http.createServer((req, res)=>{
    if(req.url == 'something'){
        fs.readFile('demofile1.html', (err,data)=>{
            if (err){
                res.writeHead(404, {'content-type':'text/html'})
                return res.end('404 Not Found')
            }
            res.writeHead(200, {'content-type': 'text/html'})
            res.write(data)
            return res.end()
        })
    } 
    else {
        res.writeHead(404, {'content-type':'text/html'})
        return res.end('404 Not Found')
    }

}).listen(80)
 

Комментарии:

1. Спасибо. Я читал о анализаторе url, где я могу выдать ошибку, как вы говорите. Вот почему я все больше запутываюсь в этой ошибке, которая не производила. Теперь мне ясно, что мой код работает, только если я указываю какой-либо URL-адрес в своем коде.