/ /ノード警告のファイル名と行番号はどこで入手できますか? -javascript、node.js、express

ノードのファイル名と行番号はどこで取得できますか? - javascript、node.js、express

ここにこれらの不可解な行があります:

デバッグ:Mongoose接続(ノード:5983) UnhandledPromiseRejectionWarning:未処理のプロミス拒否 (拒否ID:1):TypeError:未定義のプロパティ「then」を読み取ることができません (ノード:5983)[DEP0018] DeprecationWarning:未処理のプロミス拒否 非推奨です。将来、処理されない拒否を約束する Node.jsプロセスをゼロ以外の終了コードで終了します。

正確な問題がどこにあるかを推測する必要がないように、有用なデバッグ情報を取得するにはどうすればよいですか?

私はそれがこのファイルのどこかにあると信じています:

const mongoose = require("mongoose");
const helper = require("../config/helper");
const schema = require("./Schemas")

mongoose.connect(helper.getMongoose()).then(
() => {
console.log("DEBUG: Mongoose connected")
mongooseConnected();
},
(err) => {
console.log("DEBUG: Mongoose did not connect")
}
);

function mongooseConnected () {
makeSchema( schema.User,
{ id_google: "1",
type: "person",
timestamp: Date.now()
});
}

function makeSchema (Schema, dataObj) {
const Class = mongoose.model("Class", Schema);
const Instance = new Class(dataObj);
Instance.save((err, results)=>{
if (err) {
return console.error(err);
}
}).then(() => {
console.log("Saved Successfully")
});
}

回答:

回答№1は0

あなたの場合、保存関数にコールバックを提供しているので、このようにmongooseはPromiseを返しません:

  Instance.save((err, results)=>{
if (err) {
return console.error(err);
}
console.log("Saved Successfully")
})

それでもPromiseを使用したい場合は、コールバック関数を渡す必要はありません。

  Instance.save().then(() => {
console.log("Saved Successfully")
}).catch(err => {
return console.error(err);
});

回答№2の場合は0

一般に、未処理のPromise拒否とは、エラーに対処するためのcatchメソッドが欠落していることを意味します。 .then() promiseを返した後は、コードが正常に実行された場合にのみコードを処理しますが、 .catch ブロックはスキップします .then のみ実行 .catch、promiseを返すコードの実行中にエラーが発生した場合のコールバックとしてのエラー。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch

myModel.save()
.then(() => {
console.log("Saved");
})
.catch(err => {
console.log(err);
}