これは私が現時点でどのようなことを行っているかの簡単な例です。npm.loadコールバックが返されて初めてmodule.exportsを返します
index.js
var config = require('../config.js');
console.log(config.globalModules); //undefined
config.jsのそのmodule.exports
オブジェクトを移入支援するために、外部パッケージ(npm
)を使用しています。
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
はまだ空のオブジェクトを返しています。
config.js
が必須/返品の場合、var config
別名(module.exports
)が完全に入力されていることを確認するにはどうすればよいですか。長い間、コールバック関数の前に
これはできません。モジュールアーキテクチャを再考してください。ヒント:jQueryの忍者モードが好きで、あなたのための一種の '.ready()'関数があります。これは '.init(callback)'のようなものを輸出し、非同期関数の完了後にモジュールを使用できるようにします。 – slebetman