繁体   English   中英

Node.js猫鼬麻烦

[英]Node.js Mongoose trouble

我正在尝试构建我的第一个REST-api,但是我的猫鼬模块不断出现此错误。

错误消息如下所示:

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,这正是mongoose会给您的错误。 假设已经安装了mongodb,则可以在带有mongod的终端中运行它,但是从长远来看,最好将其与launchctl一起运行。 为此,请按照下列步骤操作:

如果尚未安装homebrew( http://brew.sh/

然后用它来安装mongodb

brew doctor
brew update
brew install mongodb

配置mongoDB以通过launchctl运行:

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

这样一来,您应该一切顺利,无需在重新启动后再次运行mongod

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM