Ich arbeite an einer Node.JS/Express-Anwendung. Ich benutze Jade als Vorlage-Engine. Ich habe ein seltsames Verhalten.Node.JS Express-Versprechen Ausgabe
Ich habe eine Mock-API, die ein einfaches Array an meine Jade-Vorlage zurückgibt. Ich habe überprüft, dass die API aus einer Serverperspektive funktioniert. Jedes Mal, wenn ich den Server das erste Mal, dass ich auf die jeweilige Seite gehen starten erhalte ich einen Fehler
TypeError: Cannot read property 'length' of undefined
at routes.js:28:34
at Layer.handle [as handle_request] (E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\layer.js:95:5)
at next (E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\layer.js:95:5)
at E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\index.js:277:22
at Function.process_params (E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\index.js:330:12)
at next (E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\index.js:271:10)
at Function.handle (E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\index.js:176:3)
at router (E:\dev\code\javascript\ps_resume_express\node_modules\express\lib\router\index.js:46:12)
Dies geschieht jedes Mal, wenn ich die den Server starten. Solange es jedoch aktiv ist, funktionieren nachfolgende Anrufe und die Seite wird ordnungsgemäß gerendert.
Hier ist meine Strecke Methode ist
router.get('/skills', (req, res) => {
console.log('received request for skills');
resumeAPI.getAllSkills().then((skills) => {
console.log("inside then skills length " + skills.length);
properties.skills = skills;
console.log("inside then properties.skills length " + properties.skills.length);
});
console.log("outside promise skills length " + properties.skills.length);
properties.heading = 'Skills';
res.render('skills', properties)
});
ich in den console.log Linien setzen, um zu versuchen und zu erfassen, was los ist.
Meine API-Methode ist wie folgt
class ResumeApi {
static getAllSkills() {
return new Promise((resolve, reject) => {
console.log("from api skills " + skills.length);
resolve(skills);
});
}
}
Was könnte ich falsch gemacht?
'res.render ('Fertigkeiten', Eigenschaften)' sollten in 'then' Anweisung setzen. – Hosar