Node.JS/Express 응용 프로그램에서 작업하고 있습니다. Jade를 템플릿 엔진으로 사용하고 있습니다. 나는 이상한 행동을 경험하고있다.Node.JS Express 약속 문제
나는 옥 (Jade) 템플릿에 단순한 배열을 반환하는 mock API를 가지고 있습니다. API가 서버 관점에서 작동하는지 확인했습니다. 나는 서버에게 내가 특정 페이지로 이동 처음 시작할 때마다 그러나, 나는 오류를
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)
를받을이 내가 서버를 시작할 시작할 때마다 발생합니다. 그러나 실행이 지속되는 동안 후속 호출이 작동하고 페이지가 제대로 렌더링됩니다.
여기에 내가 시도하고 무슨 일이 일어나고 있는지 캡처 CONSOLE.LOG 라인에 넣어
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)
});
내 경로 방법입니다. 내가 잘못하고있을 수도 있습니다 무엇
class ResumeApi {
static getAllSkills() {
return new Promise((resolve, reject) => {
console.log("from api skills " + skills.length);
resolve(skills);
});
}
}
을 다음과 같이
내 API의 방법은?
실행
getAllSkills()
방법.then()
내부'res.render ('기술', 속성)을 둘 필요가'안에'then' 문이어야한다. – Hosar