我有以下代碼使用node.js服務靜態/ college.html網頁 但它遇到了錯誤,並顯示在瀏覽器「內部服務器錯誤:無法讀取文件」這是打印在測試代碼中的行。node.js的內部服務器錯誤
任何建議和如何解決這個問題?謝謝
// Require the functionality we need to use:
var http = require('http'),
url = require('url'),
path = require('path'),
mime = require('mime'),
path = require('path'),
fs = require('fs');
// Make a simple fileserver for all of our static content.
// Everything underneath <STATIC DIRECTORY NAME> will be served.
var app = http.createServer(function(req, resp){
var filename = path.join(__dirname, "static", url.parse(req.url).pathname);
(fs.exists || path.exists)(filename, function(exists){
if (exists) {
fs.readFile(filename, function(err, data){
if (err) {
// File exists but is not readable (permissions issue?)
resp.writeHead(500, {
"Content-Type": "text/plain"
});
resp.write("Internal server error: could not read file");
resp.end();
return;
}
// File exists and is readable
var mimetype = mime.lookup(filename);
resp.writeHead(200, {
"Content-Type": mimetype
});
resp.write(data);
resp.end();
return;
});
}else{
// File does not exist
resp.writeHead(404, {
"Content-Type": "text/plain"
});
resp.write("Requested file not found: "+filename);
resp.end();
return;
}
});
});
app.listen(3456);
感謝您的建議。 我只是打印此行url.parse(req.url).pathname
,但它在那裏顯示爲空。那裏有什麼可能是錯的?
在'resp.write(「內部服務器錯誤:無法讀取文件」)上面添加'console.log(「無法讀取文件:」+ err)'';然後查看控制檯以查看更多關於出了什麼問題。 – adpalumbo
它顯示:錯誤:EISDIR,目錄上的非法操作 – user2514364
它看起來像你在目錄上調用'readFile'。我敢打賭,'url.parse(req.url).pathname'沒有返回你所期望的,也許是一個空字符串?嘗試使用'console.log'輸出'filename',就在你構建它之後。確保它是你期望的。 – adpalumbo