当我这样做时,fs.readFile(file...
我收到此错误:
{ [错误:ENOENT,打开 'foundation/css/normalize.css']
错误号:34,
代码:'ENOENT',
路径:'基础/css/normalize.css'}
我是否必须相对于链接它们的 HTML 文件或相对于运行服务器和路由器的 node.js 文件的位置来路由我的路径?
不,我没有使用快递,“使用快递”不是一个可以接受的答案。
编辑
@BenjaminGruenbaum 的最后评论。我不确定我的 HTTP 响应是什么意思,但我的代码逻辑如下:我通过 URI 加载我的 index.html,当它readFile
是文档时,它递归地遍历所有其他链接文件。我有一个脚本可以将其分解以正确显示正确的Content-Type
. 我将它包括在这里,因为它太长了,无法发表评论:
function route(handle, pathname, response, request){
// console.log("About to route a request for " + pathname);
if (typeof handle[pathname] === "function"){
handle[pathname](response, request);
} else {
// console.log('NON HTML');
// console.log(pathname);
var file_path = "";
var mimes = {
'css': 'text/css',
'js': 'text/javascript',
'htm': 'text/html',
'html': 'text/html',
'png': 'image/png',
'jpg': 'image/jpg',
'jpeg': 'image/jpeg'
};
// parses the url request for a file and pulls the pathname
var url_request = url.parse(request.url).pathname;
// console.log('URL REQUEST');
// console.log(url_request);
// finds the placement of '.' to determine the extension
var tmp = url_request.lastIndexOf(".");
// determines the extension by uing .substring that takes everything after '.'
var extension = url_request.substring((tmp + 1));
// console.log('EXTENSION');
// console.log(extension);
//set path of static pages
if (extension === 'css' || extension === 'js' || extension === 'htm' || extension === 'html' || extension === 'png' || extension === 'jpg' || extension === 'jpeg'){
// console.log('LOAD STATIC PAGE');
file_path = url_request.replace("/", "");
// console.log(file_path);
// console.log();
}
//load needed pages and static files
fs.readFile(file_path, function (error, data){
if(error){
// console.log("AM I DEAD");
// console.log(error);
// console.log();
response.writeHeader(500, {"Content-Type": "text/html"});
response.write("<h1>FS READ FILE ERROR: Internal Server Error!</h1>");
}
else{
response.writeHeader(200, {"Content-Type": mimes[extension]});
console.log('SHOULD BE SUCCESS')
console.log(mimes[extension]);
// console.log(data);
response.write(data);
}
response.end();
});
response.end();
}
}
exports.route = route;
正如您可以通过我有多少个地方来判断的那样,console.log()
我可以一直追踪到底部它在这里失败了:
else{
response.writeHeader(200, {"Content-Type": mimes[extension]});
console.log('SHOULD BE SUCCESS')
console.log(mimes[extension]);
// console.log(data);
response.write(data);
}
我为有点草率的缩进道歉。
最终编辑:
可以在我的以下问题中找到对这种愚蠢情况的最终解决方案:Node.js - 资源解释为脚本但使用 MIME 类型 text/plain 传输
非常感谢@BenjaminGruenbaum 忍受 Noob