2017-11-05 13 views
0

fs.read/write 함수가 비동기 적이기 때문에 구현하기에 적합한 방법이 무엇인지 궁금합니다. 처음에는 webapp가 계속 실행되고 설정 JSON obj가 .json 파일에서로드되었습니다. .json 파일에서 fileJSON.js의 (가) 막아 수행하는 모듈과 부하를 수행하지만, 어떻게 그것을 사용하는 경우node.js - 파일에서 JSON 구성 파일을로드했을 때 응용 프로그램을 실행하십시오.

제대로 제가 설명 무엇을 달성하기 위해 :

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 파일을 yout 프로젝트의 루트에 생성하십시오.

console.log(proccess.env.HOST_ADDRESS) 
:

node -r dotenv/config index.js 

당신은 같은 변수에 액세스 할 수 있습니다

// .env 
HOST_ADDRESS=localhost:9000 

옵션과 같이 필요로 스크립트를 실행