Node.js - 为什么无法从正确的路径读取文件

时间:2018-03-31 04:26:27

标签: node.js

我正在尝试阅读文件,但我收到了以下错误:

  
    

false {[错误:ENOENT:没有这样的文件或目录,打开'./www/text.html']错误:-2,代码:'ENOENT',系统调用:'打开',
    路径:'./www/text.html'}

  

我验证了text.html存在于www文件中

这是我的代码

 var http = require('http');
 var fs = require('fs');

 http.createServer((req,res)=>{

 var fsFile = './www' + req.url;

 fs.readFile(fsFile ,(err,data)=>{

   console.log(req.url) 

   if(err){

      console.log('false',err);

   }else{

      res.write(data)

   }

  res.end();

 })

}).listen(7077)

我该怎么做才能解决这个问题?

非常感谢!

1 个答案:

答案 0 :(得分:1)

.readFile()的文件路径必须是绝对的。

试试这个:(注意在第4行使用全局变量__dirname

var http = require('http'); var fs = require('fs');

http.createServer((req,res)=>{
    var fsFile = __dirname + '/www' + req.url;
    fs.readFile(fsFile ,(err,data)=>{
        console.log(req.url)
        if(err){
            console.log('false',err);
        }else{
            res.write(data)
        }
        res.end();
    })
}).listen(7077)

__dirname返回调用节点进程的绝对文件路径。

此变量的同义词是函数process.cwd()(当前工作目录)