我是Node.js,MongoDB和MongoJS的新手。
我有app.js
这是我从node app.js
命令行运行的服务器。在OS X 10.9.1与Node.js v0.10.28。
在app.js
我有(作为片段)
var db = require('./database');
var blog = require('./classes/blog');
和database.js
已
var db = require("mongojs");
db.connect('mydb', ["Users", "Posts"]);
和/classes/blog.js
已
function load(OnDone) {
if (db.connected) {
OnDone();
}
}
当我致电blog.load()
时,我得到了
ReferenceError: db is not defined
at Object.load (node/classes/blog.js:13:6)
at node/app.js:36:7
at Server.onRequest (node/server.js:35:12)
at Server.EventEmitter.emit (events.js:98:17)
at HTTPParser.parser.onIncoming (http.js:2108:12)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:121:23)
at Socket.socket.ondata (http.js:1966:22)
at TCP.onread (net.js:527:27)
当我尝试调用load()
函数时,我的应用程序中的所有内容都按预期工作,但使用我认为在db
中声明的app.js
var
为什么db
未定义?我使用模块错了吗?
注意:如果你不知道,我从我的脚本中提取了这些代码行,因为到目前为止,我的应用程序相对较长,因此我不想显示所有内容。除非我需要。
答案 0 :(得分:0)
我相信Node.js模块已被包含,因此无法访问其父项中定义的变量(正如我所假设的那样)。
我将db
移到了全局命名空间(我删除了var
),现在它正在运行。