我在写一个非常基本的Node应用程序,它包含三个组件:index.js,mqtt.js,slack.js。 mqtt和slack模块都使用module.exports公开了一些方法。但是,我只能向一个方向公开文件。代码示例:require()的排序似乎影响模块
index.js:
var slack = require('./slack');
var mqtt = require('./mqtt');
var client;
mqtt.connectMQTT(client);
slack.startServer();
slack.js:
var mqtt = require('./mqtt');
module.exports = {
startServer: function() { //blahblah },
postToSlack: function() { //blahblah }
};
mqtt.js:
var slack = require('./slack');
module.exports = {
connectClient: function() { //blahblah },
handleMessage: function() { slack.postToSlack(); }
};
现在,当我尝试调用postToSlack()来自mqtt.js,Node给我:TypeError:Object#没有方法'postToSlack'
但是,当我在index.js中交换两个require()的行位置时,现在我可以从mqtt调用方法,但不能从slack中调用方法。该错误已被镜像。我可以从index.js调用方法就好了。
我应该使用回调拖延运行任何代码,直到我的所有模块已成功加载?为什么require()在完全独立的文件中的顺序会影响到暴露方法?