728x90
상황
???: Local에서는 되는데 Server에서는 안 돼요.
저 상황이 그대로 일어났다.
Local에서 해당 페이지를 구동시켰을 때, 온전히 페이지가 잘 작동되는 것을 확인하고 배포하였는데
다음과 같이 500 에러가 발생하였다.
에러코드
org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "class path resource [templates/pages/recommend/recommend-read.html]")
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parse(AbstractMarkupTemplateParser.java:241) ~[thymeleaf-3.1.1.RELEASE.jar!/:3.1.1.RELEASE]
at org.thymeleaf.templateparser.markup.AbstractMarkupTemplateParser.parseStandalone(AbstractMarkupTemplateParser.java:100) ~[thymeleaf-3.1.1.RELEASE.jar!/:3.1.1.RELEASE]
...
org.thymeleaf.exceptions.TemplateInputException: Error resolving template [/common/fragments/header], template might not exist or might not be accessible by any of the configured Template Resolvers (template: "pages/recommend/recommend-read" - line 19, col 8)
at org.thymeleaf.engine.TemplateManager.resolveTemplate(TemplateManager.java:869) ~[thymeleaf-3.1.1.RELEASE.jar!/:3.1.1.RELEASE]
at org.thymeleaf.engine.TemplateManager.parseStandalone(TemplateManager.java:250) ~[thymeleaf-3.1.1.RELEASE.jar!/:3.1.1.RELEASE]
아래의 이유, header를 연결한 문제 때문에 recommend-read라는 html파일이 연결되지 않는 것처럼 보이는 에러였다.
그래서 헤더를 불러오는 코드를 계속해서 수정하기 시작했다.
<div th:replace="/common/fragments/header"></div>
<div th:replace="~{/common/fragments/header}"></div>
<div th:replace="~{/common/fragments/header::header}"></div>
계속 안되던 도중, 컨트롤러 반환값에 "/"가 맨 앞에 있으면 리눅스 환경에서 thymeleaf 리졸버가 읽지 못한다는 글을 보고, 해당 코드를 다음과 같이 수정했다.
문제 해결 코드
<div th:replace="~{common/fragments/header::header}"></div>
코드를 고치고, 깃랩의 CI/CD가 완료되자마자 접속하니 바로! 안된다.
시간이 조금 더 흐르고 나서 다시 접속하니 에러 나던 페이지가 문제없이 작동하기 시작했다.
"/"가 있으면 리졸버가 읽지 못한다는 점.
배포 후 시간이 조금 지나야 적용된다는 점을 알게 되었다.
반응형