2017-10-17 5 views
1

ReactJs를 프론트 엔드로 사용하고 Spring 부트를 백엔드로 사용하는 프로젝트 작업 중입니다. 백엔드에서 ReactJS 앱에 몇 가지 환경 변수를 전달하고 싶습니다. 제 아이디어는 다음과 같습니다 :Thymeleaf가 Reactjs 빌드와 충돌합니다.

1) 스텁 ReactJs 응용 프로그램을 생성하려면 create-react-app을 사용하십시오. 공개 된 index.html 파일에서을 "자원/템플릿"디렉토리 사용자 정의 태그

<body> 
     <script th:inline="javascript"> 
     /*<![CDATA[*/ 
     var env = [[${env}]]; 
     /*]]>*/ 
     </script> 
     ... 
     <div id="root"></div> 
    </body> 

2) 복사 빌드 디렉토리에서 코드를 생성

3) 프론트 엔드 코드를 생성 할 수 npm run build을 실행을 정의

NPM 빌드 할 때 4) 백엔드의 컨트롤러에서 환경 값

@GetMapping(value = "/") 
public String messages(Model model) { 
    model.addAttribute("env", System.getenv("env"); 
    return "index"; 
} 

을 설정하지만 2 단계에서 실패, 오류가 발생했습니다 메시지

Template execution failed: ReferenceError: env is not defined

이 문제를 해결할 수있는 방법이 있습니까? 아니면 다른 접근 방법을 취해야합니까?

답변

0

아직 말씀 드릴 수 없으므로 아래는 Thymeleaf2에서 모델 변수를 참조하는 방법입니다.

<script th:inline="javascript"> 
    /*<![CDATA[*/ 
     var env = /*[[${env}]]*/ ''; 
    /*]]>*/ 
</script> 
+0

귀하의 조언에 감사드립니다. 새로운 구문으로 시도했지만 동일한 결과가 나타납니다. –

+0

속성 값 "env"는 컴파일 타임이 아닌 런타임시에만 채워집니다. 값을 기본값으로 설정하거나 시스템 변수를 npm args로 전달해야 할 수도 있습니다 –