我试图建立一个基本的静态Web服务器,很简单的一个,几行字,处理3名的请求,图标的路径规则,JS和html文件:什么的NodeJS
项目struture:
在server.js-D:
-project
-build
-index.html
-fav.icon
-dist.js
-server.js
代码
http.createServer(function(req, res) {
//create dynamic filepath for response via requests MIME type
let filePath = './build' + req.url;
fs.access(filePath, callback(err){
console.log(err);
res.writeHead(200, {'Content-Type': contentType});
let file = fs.createReadStream(__dirname + filePath);
file.pipe(res);
});
});
奇怪的是,文件路径,昨晚的工作我记得,但我不知道发生了什么事或什么,我已经改变了,它不工作了。所以我试图调试它,现在控制台会显示:
'no such file...D:\project.\build\'
有一个'。'之前“\建设”那里,所以我试图删除此:
let filePath = '/build' + req.url;
然后它会显示
'no such file...D:\build\'
哪里是“项目”目录?再次,去掉 '/' brfore '构建':
let filePath = 'build' + req.url;
'项目' 回来:
'no such file...D:\projectbuild\'
我试图用path.resolve(__目录名称,绝对路径)和path.join(__目录名,相对路径),他们都返回相同的。
我不知道为什么我昨晚可以访问我的服务器,但不是今天,我记得在某处我看到一个链接到'节点文件路径规则'或'节点文件访问规则'类似的东西,我GOOGLE了它试图在节点文档中搜索,但没有运气,那么在Node中访问路径的规则是什么?
谢谢你的答案,它的工作原理,所以为了进一步的用法,你能告诉我'/ build'和'./build'是什么意思,我想了解更多关于Node文件访问路径规则。 –
对于那些东西,节点只遵循Unix路径标准。因此,以斜杠开始的路径意味着“从根目录开始”。在Windows上,/ build会因此表示D:\ build,如果您在D驱动器中。从一个点开始,斜杠意味着“从当前目录开始”。因此,如果您在D:\ projects中并且您说./build,则路径将为D:\ projects \ build。您可以通过进入Node REPL和调用路径来使用它。解析()你想要尝试的任何字符串路径片段。 – Paul