【发布时间】:2014-06-12 22:22:46
【问题描述】:
我正在编写一个非常基本的 Node 应用程序,它包含三个组件:index.js、mqtt.js、slack.js。 mqtt 和 slack 模块都通过 module.exports 公开了它们的一些方法。但是,我只能向一个方向公开文件。代码示例:
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(); }
};
现在,当我尝试从 mqtt.js 调用 postToSlack() 时,Node 给了我:TypeError: Object # has no method 'postToSlack'
但是,当我在 index.js 中交换两个 require() 的行位置时,现在我可以从 mqtt 调用方法,但不能从 slack 调用方法。错误已经反映了自己。我可以从 index.js 调用方法就好了。
我是否应该使用回调来推迟运行任何代码,直到我的所有模块都已成功加载?为什么在完全独立的文件中 require() 的顺序会影响公开方法?
【问题讨论】:
标签: javascript node.js module require