2016-04-05 14 views
1

設定ファイルを読み込もうとしていますが、設定ファイルが存在しない場合、プログラムはconfig.example.jsから新しい設定ファイルを生成します新しく生成されたファイルが必要です。しかし、fs.writeFileSync()を使用しても、Cannot find module './config.js'でクラッシュするため、ノードが "同期"書き込みが完了する前にconfig = require('config.js');を実行しているように見えます。ここで同期書き込みが完了する前にファイルを読み込もうとしているノード

は、問題のコードです:

var config; 
//Create new config file if one not found 
try { 
    config = require('./config.js'); 
} catch (e){ 
    fs.writeFileSync('./config.js', fs.readFileSync('./config.js.example')); 
    console.log("New config file config.js created"); 
    config = require('./config.js'); //Line it crashes on 
} 
+0

何らかのコールバックが必要なような音がします。私は確信していませんが、私は非常に正しい答え= Pに興味があります –

答えて

1

これが原因でキャッシングが必要で動作する方法です。最初のイベントが失敗したため、イベントループがクリアされるまで2番目のイベントも失敗します。代わりにこの方法を試してみてください。

if (fs.existsSync('/config.js')) { 
    config = require('./config'); 
} else { 
    fs.writeFileSync('./config.js', fs.readFileSync('./config.js.example')); 
    config = require('./config'); 
} 
+0

これはそれを修正しました。ありがとう! –

関連する問題