我正在尝试在终端中运行nodemon index.js,但是我收到以下错误,我完全不知道这对我来说意味着什么是非常不清楚的。
可以请任何人向我解释如何解决这个问题吗?
index.js
const express = require('express');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');
var app = express();
var router = require('./services/router');
mongoose.connect('mongodb://localhost:apiAuth');
app.use(morgan('combined'));
app.use(bodyParser.json());
app.use('/v1', router);
var PORT = process.env.PORT || 3000;
var HOST = process.env.HOST || '127.0.0.1';
console.log('Listening on', HOST, PORT);
app.listen(PORT, HOST);
服务/ router.js
var router = require('express').Router();
function protected(req, res, next) {
res.send('Here is the secret!');
}
router.route('/protected')
.get(protected);
module.exports = router;
终端
[nodemon] restarting due to changes...
[nodemon] restarting due to changes...
[nodemon] starting `node index.js`
Listening on 127.0.0.1 3000
(node:29104) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 2): Error: Slash in host identifier
(node:29104) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
答案 0 :(得分:3)
问题来自您通过Mongoose与MongoDB的连接。
简短版:
您输入了错误的登录网址:
mongoose.connect('mongodb://localhost:apiAuth');
^^^^^^^
我认为你想写(或接近它):
mongoose.connect('mongodb://localhost:'+apiAuth);
以下是MongoDB登录网址的示例:mongodb://127.0.0.1:27017/my_db
。
或者文档:Standard Connection String Format
长版:
问题的解决方法与上述相同,但您可以自己找到它。 就我而言,我继续这样做(因为我有完全相同的问题,有尽可能多的信息)。
catch()
建立连接后添加mongoose.connect(...).catch((e) => { console.log(e); throw e; }
。这将直接表明有关方面和一些其他信息。这种技术在很多情况下都适用。
答案 1 :(得分:2)
我也有与上面相同的错误(错误:主机标识符中的斜杠)。我解决了这个问题。我正在访问下面的猫鼬。我的数据库密码包含 @ ,所以当我们的密码具有 @ 特殊字符时,我们需要在 encodeURIComponent 的帮助下传递此问题。我传递了用户名和密码,就像下面的工作正常一样。
错误:
mongoose.connect('mongodb://xxx-xx:7a?VNXd@@sabfpV8=gRLwnNvC_8@196.89.12.168:27017/xxxxx',function(err,db){
if(err){
console.log(err);
}else {
console.log('connected to the Test db');
}
});
已解决的代码:
mongoose.connect('mongodb://xxx-xx:'+encodeURIComponent("7a?VNXd@#@safpV8=gRLwnNvC_8")+'@196.89.12.168:27017/xxxxx',function(err,db){
if(err){
console.log(err);
}else {
console.log('connected to the Test db');
}
});