0

我是 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.

为什么会db是未定义的?我使用模块错了吗?

注意:如果您不知道,我从脚本中提取了这些代码行,因为到目前为止,我的应用程序对于 SO 问题来说相对较长,除非需要,否则我不想全部显示。

4

1 回答 1

0

我相信包含 Node.js 模块,因此无法访问其父级中定义的变量(如我所料)。

我搬到db了全局命名空间(我删除了var),它现在可以工作了。

于 2014-05-27T05:12:59.117 回答