私のスコープには何か問題があります。私は、次のサンプルコードがあります、Node JS Scoping
/**
* Created by David on 10/9/2016.
*/
var public = {};
//REQUIRES
var fs = require('fs');
var rl = require('readline');
//========================================
var configFile = './config';
public.configFile = configFile;
//========================================
public.readSettingsFile = function(conFile){
return new Promise(function(resolve,reject){
try {
console.log("Importing Settings");
//read configuration file line by line
var lineStream = rl.createInterface({
input: fs.createReadStream(conFile === undefined ? configFile : conFile)
});
lineStream.on('line', function (line) {
if(!line.startsWith('#')){
var splitLine = line.split('=');
switch(splitLine[0]){
case 'version':
public.version = splitLine[1];
break;
case 'basePath':
public.basePath = splitLine[1];
break;
}
}
resolve(public);
});
}catch(err){
reject(err);
}
});
}
//========================================
module.exports = public;
私は期待を.thenに、pは返すべきであることを約束して、成功したreadSettingsFile後、そのpublic.versionは今含めるべきであるが、それは次のように返しています:
{ configFile: './config', readSettingsFile: [Function] }
にconsole.logスイッチでステートメントが正常に戻っている:
0.1
あなたは 'public.readSettingsFile'関数を呼び出していません。そうするとき、あなたのreadlineコードが非同期であることが分かります。 – zerkms
あなたがやっていることの多くは、明確で完全ではありません。たとえば、実際にどこでreadSettingsFileを呼び出しますか?あなたの約束はまた成功の結果を返しません。 –
申し訳ありませんが、より多くの感覚を与えようと編集しました –