当我执行此代码时,它给了我错误:34,代码:'ENOENT'错误。 我写了一个简单的html hello world页面。 它应该只是在端口3000上运行时打印hello world,但每次显示相同的错误。 我目前的节点版本是v0.10.38
var http = require('http');
var fs = require('fs');
var url = require('url');
http.createServer(function(request, response) {
var pathname =url.parse(request.url).pathname;
console.log("request for "+ pathname + "recieved");
fs.readFile(pathname.substr(1), function (err, data) {
if(err){
console.log(err);
response.writeHead(404,{'Content-Type': 'text/html'});
}else{
response.writeHead(200,{'Content-Type': 'text/html'});
response.write(data.toString());
}
response.end();
});
}).listen(3000);
console.log("server running at 3000");
答案 0 :(得分:0)
您的代码对我来说很合适。我想当你发送请求时,你要求它提供一个不存在或者路径信息不正确的文件。这就是错误告诉你的内容,找不到提供给fs.readFile调用的路径。我做了以下事情:
1)将您的代码复制到文件/home/username/Desktop/test.js(Ubuntu 12.04)
2)打开铬网页浏览器
3)在URL框中输入127.0.0.1:3000//etc//fstab并按Enter键,其中127.0.0.1:3000使浏览器在您自己的机器上的端口3000处查找服务器
读取文件/ etc / fstab并成功显示在浏览器窗口中。
我的猜测是,当您输入URL时,您要求的文件超出范围或路径错误。如果我试图找到一个完整路径的文件,我得到了相同的结果:{[错误:ENOENT,打开' whereIsMyFile']错误:34,代码:' ENOENT& #39;,路径:' whereIsMyFile' }
如果您确实请求与node.js脚本位于同一目录中的文件,则不需要完整路径。例如,该文件可以自行读取:127.0.0.1:3000 / test.js