2017-11-05 1 views
0

fs.read/write関数が非同期であるため、実装する適切な方法は何ですか?最初はwebappが実行され続けます。 JSON objが.jsonファイルから読み込まれました。node.js - JSON設定ファイルがファイルからロードされたときにアプリケーションが実行される

.jsonファイルから保存してロードを行うためにfileJSON.jsモジュールをしますが、どのように私は私が説明したものを達成するためにそれを正しく使用しない場合:

const fs = require('fs'); 

module.exports = { 

    save: function(path, json, callback) { 
     if(typeof json === "object"){ 
      json = JSON.stringify(json, null, 2); 
     } 
     if(typeof json === "string"){ 
      return fs.writeFile(path, json, 'utf8', callback); 
     }else{ 
      return error("argument not an obj or a string"); 
     } 
    }, 

    load: function(path, callback) { 
     fs.readFile(path, 'utf8', function(err, data){ 
      if (err){ 
       console.log(err); 
       return "shit happened - see log"; 
      } else { 
       let obj = JSON.parse(data); //now it an object 
       callback(obj); 
       return true; 
      } 
     }); 
    } 

} 

答えて

1

あなただけそれを実行する必要がある場合起動時に(アプリケーションを再起動せずにリロードすると予想される設定ファイルなど)、最も簡単なのはちょうどrequireです。

const config = require('./config.json'); 

これは同期して実行され、アプリケーションが実行されている間、npmキャッシュに結果をキャッシュします。

1

環境内での設定の保存はtwelve factor appの一部ですので、Dotenvパッケージを使用することをお勧めします。構成変数を環境にエクスポートするために使用されます。あなたのプロジェクトのルートに.envファイルを作成してください。あなたがそのような変数にアクセスすることができます

node -r dotenv/config index.js 

console.log(proccess.env.HOST_ADDRESS) 

// .env 
HOST_ADDRESS=localhost:9000 

を使用してスクリプトを実行しますので同様にオプションが必要です

関連する問題