/ / Gdzie mogę uzyskać nazwę pliku i numer wiersza ostrzeżenia o węźle? - javascript, node.js, express

Gdzie mogę uzyskać nazwę pliku i numer linii ostrzeżenia o węźle? - javascript, node.js, express

Mam tutaj te tajemnicze linie:

DEBUG: połączenie Mongoose (węzeł:5983) UnhandledPromiseRejectionWarning: Nieobsłużone odrzucenie obietnicy (identyfikator odrzucenia: 1): TypeError: Nie można odczytać właściwości „then” wartości undefined (węzeł: 5983) [DEP0018] DeprecationWarning: Nieobsłużone odrzucenia obietnicy są przestarzałe. W przyszłości odrzucanie obietnic, które nie są obsługiwane zakończy proces Node.js niezerowym kodem zakończenia.

Jak mogę uzyskać przydatne informacje dotyczące debugowania, aby nie musieć zgadywać, gdzie dokładnie jest problem?

Myślę, że jest gdzieś w tym pliku:

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")
});
}

Odpowiedzi:

0 dla odpowiedzi № 1

W twoim przypadku zapewniasz wywołanie zwrotne do funkcji zapisywania, w ten sposób mangusta nie zwróci Obietnicy:

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

Jeśli nadal chcesz używać Promise, nie musisz przekazywać funkcji zwrotnej:

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

0 dla odpowiedzi nr 2

Ogólnie rzecz biorąc, nieobsłużone odrzucenie obietnicy oznacza, że ​​„brakuje Ci metody catch, aby poradzić sobie z błędem .then() po zwróceniu obietnicy zajmuje się tylko kodem, jeśli działa pomyślnie, natomiast zawiera plik .catch blok przeskoczy .then i tylko biegnij .catch, z błędem jako wywołaniem zwrotnym, gdy wystąpi błąd podczas wykonywania kodu, który zwraca obietnicę.

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);
}