찾다

 >  Q&A  >  본문

node.js - nodejs 的sails 框架如何修改ejs的后缀为html

迷茫迷茫2837일 전702

모든 응답(2)나는 대답할 것이다

  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:05:33

    해결책 발견

    템플릿의 접미사를 html으로 변경했을 때 페이지에 액세스할 때 오류가 보고되었습니다. 접미사 구성이 잘못된 것이 분명했습니다.

    으아아아

    Could not render view 코드를 검색해서 추가 노드view를 찾았습니다. 이때 전문 검색을 하기 위해 defaultEngine라는 키워드를 찾아 위치를 찾았습니다.

    으아아아

    위 코드에 따르면, default Engine의 구성에서 view engine을 얻었다는 의미입니다. 그럼 계속해서 검색해 볼까요 view engine. 다음 코드를 찾으세요:

    으아아아

    위 코드를 보면 view engine이 실제로는 sails.config.view.engine.ext의 구성이며 구성 파일 경로와 동일하다는 것을 알 수 있습니다.

    으아아아

    이때 이 코드에 중단점을 넣습니다

    으아아아

    그런데 놀라운 일이 일어났습니다

    으아아아

    해당 구성인 것 같은데, 이 파일을 열어보니 engine 내부가 이렇게

    정의되어 있었습니다. 으아아아

    이런! , 상황은 무엇이며 형식이 잘못된 이유는 무엇입니까? 나는 그것이 json 문자열일 것이라고 생각했습니다.

    그런 다음 대담하게 조정하세요

    으아아아

    올바른 구성 변경을 위해 다시 내보내기

    으아아아

    이때, 자신감있게 다시 시작하고 페이지를 새로고침했는데 또 오류가 발견되었습니다! ! ! ! 뭐야

    으아아아

    오류 보고서가 변경되어 지금 수정한 내용이 확실히 효과적임을 나타냅니다. 그러다 이때 헤더 접미사 이름을 다시 ejs로 변경했더니 프런트 엔드 페이지가 정상적으로 나오는 것을 확인했습니다. 이 header 파일을 불러오면 접미사 이름이 프로그램에 쓰여지는 것 같습니다.

    남은 과정은 어디가 문제인지 파악하고, 오류 리포트 실행 순서에 따라 어디가 문제인지 알아내는 것!

    으아아아

    위 코드를 찾아보니 경로 변수에 문제가 있어서 찾을 수 없는 것을 발견했습니다. namefilename

    을 인쇄해 보겠습니다. 으아아아

    이번에 방법을 찾았습니다resolveInclude

    으아아아

    보세요, 이 장소가 접합되었다는 뜻이지만 extname가 비어 있을 때만 접합된다는 뜻입니다. 즉, 여기서 name는 전달될 때 접미사 이름을 포함하지 않는다는 뜻입니다! ! ! !

    이것을 보고 기본적으로 layout.html 템플릿에서 include 명령이 header

    을 로드하는 데 사용된다는 것을 이해했습니다. 으아아아

    그래서 여기 headerheader.html로 변경하고 다시 방문하시면 정상적으로 됩니다.

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:05:33

    그렇다면 네이티브 HTML로 직접 작성할 수 있는 jade 템플릿을 사용해 보는 것은 어떨까요

    회신하다
    0
  • 취소회신하다