Node.js猫鼬的麻烦

Node.js Mongoose trouble

我正在尝试构建我的第一个 REST-api 但我一直在使用 mongoose 模块时遇到此错误。

错误消息如下所示:

Josephs-MacBook-Pro:rest joseph$ node server
API is running on port 3000

        /Users/joseph/Documents/Atom-files/rest/node_modules/mongoose/node_modules/mongodb/lib/server.js:228
                process.nextTick(function() { throw err; })
                                                    ^
        Error
            at Object.<anonymous> (/Users/joseph/Documents/Atom-files/rest/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:42:24)
            at Module._compile (module.js:460:26)
            at Object.Module._extensions..js (module.js:478:10)
            at Module.load (module.js:355:32)
            at Function.Module._load (module.js:310:12)
            at Module.require (module.js:365:17)
            at require (module.js:384:17)
            at Object.<anonymous> (/Users/joseph/Documents/Atom-files/rest/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/index.js:2:17)
            at Module._compile (module.js:460:26)
            at Object.Module._extensions..js (module.js:478:10)

我的 server.js 文件如下所示:

var express = require('express');
var mongoose = require('mongoose');
var bodyParser = require('body-parser');

mongoose.connect('mongodb://localhost/rest_test');

var app = express();
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

app.use('/api', require('./routes/api'));



app.listen(3000);
console.log('API is running on port 3000');

最后我的 api.js 文件如下所示:

var express = require('express');
var router = express.Router();


router.get('/products', function(req,res){
  res.send('api is working');

});


module.exports = router;

我(显然)是 Node.js 开发的新手,不知道为什么会出现此错误。我知道 process.nextTick 与节点循环有关,但我不知道为什么在我启动应用程序时会发生错误。

如有任何建议,我们将不胜感激。

如果您的本地主机上没有 mongoDB 运行ning,这正是猫鼬会给您的错误。假设您已经安装了 mongodb,您可以 运行 在带有 mongod 的终端中安装它,但在较长的 运行 中它可能更可取 运行 launchctl。为此,请按照下列步骤操作:

如果您还没有安装自制软件 (http://brew.sh/)

然后用它来安装mongodb

brew doctor
brew update
brew install mongodb

通过 launchctl 将 mongoDB 配置为 运行:

mkdir -p ~/Library/LaunchAgents
pushd ~/Library/LaunchAgents
cp `brew --prefix`/Cellar/mongodb/**/*.mongodb.plist .
launchctl load -w *.mongodb.plist
popd

这样你就可以开始了,不需要在重启后再次 运行 mongod