2014-10-21 101 views
0

我是新的蜜蜂學習節點js。我正在嘗試從同一目錄中讀取文件,然後使用文件系統的(fs)readFile方法打印其內容。當我運行它時,我發現程序沒有進入這個方法。我試圖把console.log()放在readFile方法中,我發現它沒有在這個方法內部打印任何內容。無法使用fs nodejs讀取文件

我不知道到底發生了什麼,爲什麼它跳過這種方法。

這裏是我使用的摩卡

"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運行帆布util.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'以便通過測試。任何的意見都將會有幫助。

回答

0

fs.readFile()是異步的。把你的next(err, data1);放在fs.readFile()的回調中。

+0

幾乎看着這篇文章http://stackoverflow.com/questions/21963858/how-to-read-file-to-variable-in-nodejs,在我改變的時間內我得到了你的答案..異步是真的在節點js編程時需要考慮一個大問題。謝謝。 – Deepak 2014-10-21 21:25:44

0

而不是fs.readFile();爲什麼不使用fs.readFilesync();?你可以嘗試相同的參數。