Не може да прочете файла с помощта на 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 съдържа само "hi".

проверявам дали получавам низа във файла към променливата '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/, в рамките на времето, през което променям, получих отговора ви.. Asynchronous наистина е голяма идея, за която трябва да се притеснявате, докато програмирате в node js. Благодаря ти. - person Deepak; 22.10.2014

Вместо fs.readFile(); защо не използвате fs.readFilesync();? Можете да опитате същите параметри.

person ModerateJavaScriptDev    schedule 19.11.2014