2

一連のファイルを非同期で開き、そのコンテンツを読み取るスクリプトを実行しようとしています。のコールバックがデータなしで入ってくるというエラーが発生しfs.readFileていますが、ファイルはそこにあり、現在他のものによって開かれていません。完全に混乱しています。

エラーは次のとおりです。

エラー: OK、「D:\Workspace\fasttrack\public\cloudmade\images\998\256\6\31\61.png」を開きます

より詳しい情報:

プログラムは、次のような一連のオブジェクトを含むループを実行します。

newObject = {
    filePath:filePath,
    scanPixels:function(parent){
        ....
    }
}

ループは各オブジェクトのscanPixels関数を呼び出しますfs.readFileparent.filePath

これがforループです

for(var index=0;index<objects.length;index++){
    objects[index].scanPixels(objects[index]);
}

scanPixels 関数は基本的に次のとおりです。

scanPixels:function(parent){

            png_js.decode(parent.filePath, function(pixels){

                ...more stuff

そしてpng_jsファイルで:

PNG.decode = function(path, fn) {

  return fs.readFile(path, function(err, file) {

    var png;
    png = new PNG(file);
    return png.decode(function(pixels) {
      return fn(pixels);
    });
  });
};
4

1 に答える 1

1

問題は、fs.readFile が値を返さないことです。そのためには fs.readFileSync が必要です

var buffer1 = fs.fileReadSync('./hello1.txt');

var buffer2;
fs.fileRead('./hello2.txt', function (err, file) {
    buffer = file;
});
于 2013-05-21T09:18:47.710 に答える