Dies ist ein vereinfachtes Beispiel dessen, was ich gerade durchmache.Nur module.exports zurückgeben, sobald npm.load Callback zurückgegeben wird
index.js
var config = require('../config.js');
console.log(config.globalModules); //undefined
config.js verwendet ein externes Paket (npm
) bevölkert sein module.exports
Objekt zu helfen.
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})
});
Ich habe hier alle async/sync Rückruf Fragen gelesen und haben versucht, dieses Problem zu lösen, indem ein synchrones Paket verwenden, aber gescheitert. Ich habe versucht, sync
und wait.for
zu verwenden, aber var config
gibt immer noch ein leeres Objekt zurück.
Wie stelle ich sicher, dass var config
aka (module.exports
) vollständig ausgefüllt ist, wenn config.js
erforderlich/zurückgegeben wird.
Es ist nicht möglich. Überdenken Sie Ihre Modularchitektur. Tipp: Mach jQuery Ninja Modus und habe eine Art '.ready()' Funktion für dein Modul. Es exportiert etwas wie '.init (Callback)', das Ihnen erlaubt, das Modul zu verwenden, nachdem die async Funktionen abgeschlossen sind. – slebetman