无法使用fs nodejs读取文件

时间:2014-10-21 21:15:59

标签: node.js mocha fs

我是学习节点js的新蜜蜂。我试图从同一目录中读取一个文件,然后使用文件系统的(fs)readFile方法打印其内容。我看到程序在运行时没有进入这个方法。我尝试在readFile方法中放入console.log(),我发现它没有在这个方法中打印任何内容。

我不知道到底发生了什么以及为什么它会跳过这种方法。

这是我使用mocha运行的canvas-util.js文件

"use strict";

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


module.exports.getEmailVariables = function(name, next) {
    name = "running?";
    var err = "";    
    var data1;

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

    fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
        console.log(name);
        if (!err){
        console.log('received data: ' + data);
        data1 = data
        }else{
            console.log(err);
        }
    });
    next(err, data1);
};

我的test.js包含

var canvasUtil = require("../utils/canvas-util");
var assert = require("assert");

describe('Mindrill', function () {
    this.timeout(30000);

    it('getEmailVariables should return Email variables', function (done) {
        var name="";
        canvasUtil.getEmailVariables(name, function(err, results) {

            assert.notEqual(null, results);                       
            done();
        });
    });
});

而sample.txt只包含“hi”。

检查我是否将文件中的字符串获取到变量'data1'以便通过测试。任何建议都会有所帮助。

2 个答案:

答案 0 :(得分:0)

fs.readFile()是异步的。将next(err, data1);放入fs.readFile()回调中。

答案 1 :(得分:0)

而不是fs.readFile();为什么不使用fs.readFilesync();?您可以尝试相同的参数。