ターミナルでnodemonindex.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);
services/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.
問題は、Mongooseを介したMongoDBへの接続に起因します。
ショートバージョン:
不正なログインURLを入力しました:
_mongoose.connect('mongodb://localhost:apiAuth');
^^^^^^^
_
私はあなたが書きたいと思います(またはそれに近いもの):
_mongoose.connect('mongodb://localhost:'+apiAuth);
_
MongoDBログインURLの例を次に示します:_mongodb://127.0.0.1:27017/my_db
_。またはドキュメント: 標準接続文字列形式
ロングバージョン:
問題の解決策は上記と同じですが、自分で見つけたはずです。私の側では、私はそのように進めました(私はまったく同じ問題を抱えていたので、多くの情報がありました)。
catch()
を追加します:mongoose.connect(...).catch((e) => { console.log(e); throw e; }
。これにより、関係する行といくつかの追加情報が直接示されます。この種の手法は多くの場合に機能します。
上記と同じエラーもあります(エラー:ホスト識別子のスラッシュ)。問題を解決しました。以下のようにマングースにアクセスしています。私のデータベースパスワードには@が含まれているので、パスワードに@特殊文字が含まれている場合に問題が発生しますencodeURIComponentを使用して渡す必要があります。以下のようにユーザー名とパスワードを渡しました。
エラー:
mongoose.connect('mongodb://xxx-xx:7a?VNXd@@[email protected]: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');
}
});
私は同様のエラーに直面していました、私がしたことは
以前のエラーの原因となるバージョン:
mongoose.connect("mongodb://localhost:cat_app");
作業バージョン
mongoose.connect("mongodb://localhost/cat_app");
:が/に置き換えられることを除いて、両方とも同じです。