2011-09-22 5 views
1

Express 상용구 설치를 통해 노드를 시험 중이며 Express 프레임 워크입니다. Redis가 설치되어 있어야합니다 (btw, 필요한 소프트웨어를 모두 포함하거나 특정 소프트웨어에 대한 요구 사항에 대해 경고하는 경우 - Redis는 필요에 따라 언급되지 않았습니다). 그리고 내 방식을 얻으려면 server.js 파일 주위.노드 JS 익스프레스 상용구 및 렌더링

는 지금은 아직도 내가이에 사이트를 구축 할 수있는 방법에 낯선 사람이야 ..

내가 특별히 버그 하나의 문제가 있습니다 - 나는 server.js 파일을 실행할 때, 그것은 모든 좋은 말한다 . 브라우저에서이 데이터에 액세스하려고하면 'localhost에서 데이터를 전송합니다'라는 메시지가 표시되고 끝나지 않습니다. 렌더링이 완료되지 않고 헤더를 보내지 않는 것과 같습니다. 오류 없음, 로그 없음, 아무 것도 없음 - res.render ('index')가 중단됩니다. 파일이 존재하고 스크립트가 파일을 찾았지만 아무 일도 일어나지 않습니다. 나는 정의 된 렌더링에서 콜백을 가지지 않으므로 헤더는 평소처럼 보내야한다. 반면에 나는 render 명령을 간단한 쓰기 ('Hello world')로 대체합니다. 그런 다음 res.end()를 수행하면 매력처럼 작동합니다.

렌더링과 관련하여 내가 뭘 잘못하고 있니? 나는 원래 설치 btw에서 일을 변경하지 않았습니다. 문제의 파일은 index.ejs이고 뷰 /에 있으며 심지어 app.register ('.ejs', require ('ejs'))를 호출했습니다. 렌더링 자체 앞에 있기 때문에. EJS가 설치되었습니다.

또한 주목할 가치가 있습니다. res.render ('index'); 그리고 나서 res.write ('Hello'); 그 직후에 res.end()가 나옵니다; 화면에서 "Hello"를 얻지 만 렌더는 결코 일어나지 않습니다 - 그냥 멈추고 "localhost에서 데이터 전송하기"라고 말합니다. 따라서 응용 프로그램이 실제로 죽거나 멈추지 않고 렌더링을 완료하지 않습니다.

편집 : 흥미로운 이벤트 전환 : 렌더링에서 콜백을 정의하면 응답이 끝납니다. "데이터 전송 중"은 더 이상 존재하지 않지만 뷰는 렌더링되지 않으며 레이아웃도 렌더링되지 않습니다. 검사시 소스가 완전히 비어 있습니다. 예외는 없으며 예외는 없습니다.

+0

https://github.com/munichlinux/expressjs-boilerplate – Prashanth

답변

0

문제가 해결되었습니다. render()는 라우팅 체인에서 절대적인 마지막 명령이어야합니다. res.write ('Hello') 퍼팅; 및 res.end(); 그게 정확히 무슨 일이야.

나는 모든 것을 삭제 ('인덱스') 단순히 res.render 작성하고 마법처럼 일했다. 내 실패, 뉴비에서 배우기 - 렌더링 후 아무 것도 출력하지 마라!

+0

'호출 .render''.end' 따라서 HTTP 연결이 종료되었습니다. 그 말은 당신이 쓸 일이 없다는 뜻입니다. 그것이 오류를 던지지 못한 사실은 놀랍습니다. – Raynos