Не удалось прочитать файл с помощью fs nodejs

Я новичок в изучении node js. Я пытаюсь прочитать файл из того же каталога, а затем распечатать его содержимое, используя метод readFile файловой системы (fs). Я вижу, что программа не входит в этот метод, когда я ее запускаю. Я попытался поместить console.log() в метод readFile и вижу, что внутри этого метода ничего не печатается.

Я точно не знаю, что происходит и почему он пропускает этот метод.

вот файл 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 просто "привет".

проверяя, получаю ли я строку в файле в переменную data1, чтобы пройти тест. Любые предложения были бы полезны.


person Deepak    schedule 21.10.2014    source источник


Ответы (2)


fs.readFile() является асинхронным. Поместите свой next(err, data1); внутрь обратного вызова fs.readFile().

person mscdex    schedule 21.10.2014
comment
почти глядя на этот пост > stackoverflow.com/questions/21963858/, за то время, что я изменил, я получил ваш ответ. Спасибо. - person Deepak; 22.10.2014

Вместо fs.readFile(); почему бы не использовать fs.readFilesync();? Вы можете попробовать те же параметры.

person ModerateJavaScriptDev    schedule 19.11.2014