fs.readFile函数响应未定义......有什么想法吗?

时间:2013-01-13 22:44:10

标签: javascript node.js function console

我正在运行一个简单的readfile命令,用于视频教程,这就是教师保存它的完全相同的代码......

var fs = require("fs");
console.log("Starting");
fs.readFile("./sample.txt", function(error, data) {
console.log("Contents: " + data);
});
console.log("Carry on executing");

我将sample.txt放在与此js文件相同的文件夹中, 在sample.txt文件中,我有“这是此文本文档的示例输出”, 不幸的是,我得到了一个“未定义”作为代码中数据变量的输出。

如果有人知道为什么会发生这种情况,如果有人愿意帮助那就太好了......

感谢

3 个答案:

答案 0 :(得分:3)

尝试先检查文件是否存在:

var fs = require("fs");
console.log("Starting");

fs.exists("./sample.txt", function(fileok){
  if(fileok)fs.readFile("./sample.txt", function(error, data) {
    console.log("Contents: " + data);
  });
  else console.log("file not found");
});
console.log("Carry on executing");

如果它不存在,请检查路径,文件名和扩展名,因为您的代码没问题。

答案 1 :(得分:3)

根据您的运行位置,./sample.txt得到解决的根可能会有所不同。

要确保它相对于您的模块解析,请执行以下操作:

var fs = require("fs");
var path = require('path');

var sampleTxt = path.join(__dirname, 'sample.txt');

console.log("Starting");
fs.readFile(sampleTxt, function(error, data) {
  if (error) return console.error(error);
  console.log("Contents: " + data);
});
console.log("Carry on executing");

答案 2 :(得分:1)

即使文件存在,为什么Node.js的fs.readFile()函数只在使用console.log(data)时才返回undefined,它显示值。以下示例

    var content
    function myReadFile(filepath){
    fs.readFile(filepath,'utf8', function read(err, data) {
    if (err) {
      throw err;
    }
    content = data
    console.log(content); // Only this part of it returns the  value 
                          // not the content variable itself 
    })
    return content;
    }