0

我对 Node.js 有一个奇怪的问题,其中 node_module 目录似乎相互干扰。我有以下文件结构:

- node_modules
- User.js
- app
  - app.js
  - node_modules

所以我在顶级目录中有一个 node_modules ,在 app 目录中也有一个。每个 node_modules 目录只包含一个 mongoose 目录。User.js 文件是一个简单的猫鼬模型:

exports.User = function() {
    var mongoose = require('mongoose');
    var Schema = mongoose.Schema;

    var UserSchema = new Schema({
        email:      { type: String },
        firstName:  { type: String },
        lastName:   { type: String },
    });

    mongoose.model("User", UserSchema);
    var User = mongoose.model("User");
    return User;
}();

主应用 app.js 如下所示:

var mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/crnapi");
require("../User").User.find(function(err, users) {
    if(err)
        console.log(err);

    console.log("here");
});

只是连接到 mongo 并找到用户。我看到的问题是对 find() 的调用只是挂起——从未调用过回调。

但是,如果我删除内部 node_modules 目录(app 文件夹中的那个),它工作正常。这就像内部 node_modules 的存在以某种方式搞砸了猫鼬的工作。我知道我可以将所有内容都放在外部 node_modules 中,然后删除内部的,但我有理由不这样做。

谁能告诉我这里发生了什么?有没有可以运行节点或猫鼬的调试模式,它会告诉我它挂断了什么?

4

1 回答 1

1

问题是我创建了多个猫鼬实例,而不是创建一个并让所有代码都使用它。我通过将 mongoose 模块移动到一个足够高的目录来解决这个问题,这样所有使用 mongoose 的代码都可以访问同一个目录。

于 2013-06-10T16:16:33.263 回答