今天依然重复写个简单的web server例子,但是在fs.exists判断上出了问题。代码如下:
http.createServer(function(req, res){
var reqPath = url.parse(req.url).pathname;
fs.exists(reqPath, function(exists){
if(!exists){
consloe.log(reaPath + ' not exists.');
}else{
//do something
}
});
});
在浏览器请求http://localhost:8888/index.html 时,console输出的信息居然是 “/index.html not exists.”。 首先,index.html是存在的,并且与server.js同在一个目录下。
目录结构如下: http/ |-server.js |-index.html
当我把if判断改成这样,就可以顺利执行do something了 if(exists){ console.log(reqPath + ' not exists.’); }else{ //do something }
按理说,文件存在,exists返回的是true,否则返回false。但为什么我这里的逻辑居然是相反的?
你的req.path
是/index.html
,而你的文件是在server.js
同一个目录下的…你用fs.read('/index.html', callback)
会去读根目录下的index.html
文件,当然会不存在。
我是在win下安装node的,安装路径是F:/,安装完毕后,在F盘下生成以下路径F:/nodejs
在F:/nodejs/目录下,我有两个node的程序,分别是 F:/nodejs/project/fileserver/ |-resource/style.css |-index.js |-server.js |-route.js |-requestHandler.js F:/nodejs/project/http/ |-server.js |-index.html
问题就在这里,刚才在http/下运行node server.js,无法请求localhost/index.html,而在fileserver/下运行node index.js,可以正常读取localhost/resource/style.css
这样的话,估计跟网站的根目录,是跟fs模块所在目录没关吧?网站的根目录,不应该是根据node js 入口文件所在目录而定的吗?