【问题标题】:Node.js -- Why is not able to read the file form the correct pathNode.js - 为什么无法从正确的路径读取文件
【发布时间】:2018-09-10 01:46:46
【问题描述】:

我正在尝试读取文件,但出现以下错误:

false { [错误:ENOENT:没有这样的文件或目录,打开'./www/text.html'] errno:-2,代码:'ENOENT',系统调用:'open',
路径:'./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)

我能做些什么来解决这个问题?

非常感谢!

【问题讨论】:

  • 你能给出你的项目结构吗,我想知道你的文件的相对性和访问它的服务器的相对性
  • @sduduzo gumede test.html 和一个 www 文件位于根目录中。 test.html 在 www 文件中。

标签: node.js


【解决方案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()(当前工作目录)

【讨论】:

    猜你喜欢
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2019-01-19
    • 2016-10-18
    • 2023-04-07
    相关资源
    最近更新 更多