2017-04-18 4 views
1

マイアプリPOST /deployを呼び出すことにより、指定されたディレクトリ内のファイルを作成します

シンプルなNode.jsのhttpサーバによって書かれたファイルを返しません。ファイルが書き込まれた後、私はconsole.logを使用して、そのディレクトリ内のすべてのファイルをリストしたいと思います。のNode.js:fs.readdirはfs.writeFile

ファイル(POST /deploy)を作成するために、私が呼ん:

fs.writeFile(filename, content, 'utf8', callback(null, {'newFile': filename})); 

コールバックは、HTTPレスポンスを書き込み、使用したファイルの一覧が表示されます:

fs.readdir(some_directory, (err, files) => { 
    files.forEach(file => { 
     console.log(file); 
     // Do something with the file 
    } 
} 

私の問題

新しいファイルコールバックにリストされていません。私は再度deployを呼び出すと、前のファイルがリストされます。たとえば、ファイルab/deployを連続して使用して作成すると、bが作成されたときにのみaが表示され、別の呼び出しが行われるまでbが表示されません。

コールバックが呼び出されたときにファイルが閉じられていないと仮定して、後でそのファイルが閉じられた後にfs.readdirへの呼び出しのみが表示されるようにします。

ファイルが正しく閉じられた後にコールバック関数を呼び出すにはどうすればいいですか?fs.readdirを使用してリストすることはできますか?

私はfs.close()マニュアルを読む

  • 何を試してみました。それは動作しますが、fdを必要とし、ファイル名ではなく、私は面倒思われる、それを閉じるためのファイルを開くことがあります。

    fs.open(ファイル名、「W」、機能(エラー、FD){ fs.write(fd、callback(null、{'newFile':filename}));
    }); }); fs.write(fd、content、function(err、written、buffer){ fs.closeあなたは、操作が終了するのを待たずに、すぐにコールバックを実行して上記のコードでは

    fs.writeFile(filename, content, 'utf8', callback(null, {'newFile': filename})); 
    

  • SO

+1

コールバックが疑わしいです。あなたはすでに 'fs.writefile'でコールバックを呼び出しているようです。 –

答えて

2

で同様の問題の検索私はこれがあなたの問題だと思います。 callback(null, {'newFile': filename})へのあなたの呼び出しがコールバックとしてコールする関数を実際に返した場合にのみ機能します。

これが役立つことがあります。

fs.writeFile(filename, content, 'utf8',() => callback(null, {'newFile': filename})); 

書き込み操作が完了した後、ここにcallback()が呼び出されますので。しかし、エラーを処理する必要があるため、まだ十分ではありません:

あなたのcallbackは、あなたができる最初の引数としてエラーを取ることができた場合:

fs.writeFile(filename, content, 'utf8', (err) => { 
    if (err) { 
    callback(err); 
    } else { 
    callback(null, {'newFile': filename}); 
    } 
}); 

や早期帰国あなたはelseを避けることができます。

fs.writeFile(filename, content, 'utf8', (err) => { 
    if (err) { 
    return callback(err); 
    } 
    callback(null, {'newFile': filename}); 
}); 
+0

Ba-Bam!忍者のように釘付け。ありがとう。エラーに関して - 私はチュートリアルの後で自分のNode.jsの基本を教えているので、今は無視することができます - それらは私が達成しようとしているものの焦点では​​ありません。 –

関連する問題