#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-адрес в своем коде.