为什么我收到/收到的请求{[错误:ENOENT,打开'']错误:34,代码:'ENOENT',路径:''}错误?

时间:2015-04-28 11:52:50

标签: node.js nodes

当我执行此代码时,它给了我错误: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");

1 个答案:

答案 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