2017-10-17 122 views
1

我正在使用ReactJs作爲前端和Spring引導作爲後端的項目。我想從後端將一些環境變量傳遞給ReactJS應用程序。我的想法如下:Thymeleaf與Reactjs的衝突Build

1)使用create-react-app生成存根ReactJs應用程序。在公共index.html文件,定義一個定製的標籤

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

2)運行npm run build產生

3)複製生成的代碼從構建目錄前端代碼爲「資源/模板」目錄

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參數 –