2014-11-06 2 views
0

Я получил этот код:переменный вопрос сферы в nodejs

var log = (function() { 
'use strict'; 
var fs = require('fs'), baseName='', path = require('path'); 
fs.readFile('./config.json', {encoding : 'utf-8'}, function (err, data) { 
      if (!err) { 
       var parsedConfig = JSON.parse(data); 
       logPath = parsedConfig.logFile; 
       baseName = path.basename(logPath, '.log'); 
       if (logPath.length==0) 
        logPath = './alteredFile.log'; 
      } else { 
       throw err; 
      } 
     }); 
}()); 

var module; 
module.exports = log; 

Я пытаюсь установить переменную baseName но вне стороны fs.readFile обратного вызова он не установлен и по-прежнему пуст! как я могу решить это?

+1

Также обратите внимание, что IIFE [обычно не нужны с областью модуля Node.js] (http://stackoverflow.com/questions/21531329/are-node-js-modules-need-to-be-wrapped- внутри-модуль-шаблон) –

ответ

1

baseName вместе с fs и path будет доступен только в пределах log функции. Если вы хотите, чтобы он был доступен вне диапазона log (который включает в себя fs.readFile), вы должны объявить его в более широкой области, содержащей log (глобальная область, если log сам находится в глобальной области).

Смежные вопросы