0
這是我目前經歷的一個簡化例子。只返回module.exports一次npm.load回調返回
index.js
var config = require('../config.js');
console.log(config.globalModules); //undefined
config.js使用外部封裝(npm
),以幫助填充其module.exports
對象。
config.js
var npm = require('npm');
var glob = require('glob');
module.exports = {}
// The majority of methods rely on properties which are not set until npm.load has been called.
npm.load(function (er) {
// now i can use npm properties and methods
module.exports.globalModules = glob.sync('*', { cwd: npm.globalDir})
module.exports.localModules = glob.sync('*', { cwd: npm.dir})
});
我看了所有的異步/同步回調的問題在這裏,並試圖通過使用同步方案,但都未能解決這個問題。我曾嘗試使用sync
和wait.for
,但var config
仍然返回空對象。
如何確保var config
又名(module.exports
)在需要/返回config.js
時完全填充。
這是不可能的。重新思考你的模塊體系結構。提示:像jQuery忍者模式一樣,併爲你的模塊提供一種'.ready()'函數。它導出類似'.init(callback)'的東西,它允許你在異步函數完成後使用模塊。 – slebetman