返回npm.load回调后,只返回module.exports

时间:2016-08-04 10:58:09

标签: javascript node.js npm require

这是我目前正在经历的一个简化示例。

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})
});

我已经在这里阅读了所有异步/同步回调问题,并试图通过使用同步包解决这个问题但是失败了。我尝试过使用syncwait.for,但var config仍在返回一个空对象。

如果需要/返回var config,我如何确保module.exports aka(config.js)完全填充。

1 个答案:

答案 0 :(得分:0)

npm.load在其回调函数之前很久就会返回,因此{/ 1>}在之后设置为,并使用module.exports.globalModules进行打印。 您可以使用console.log设置一些延迟,以便及时完成。