2017-10-17 6 views
1

ReactJsをフロントエンドとして使用し、バックエンドとしてSpringブートを使用するプロジェクトに取り組んでいます。私はバックエンドからReactJSアプリにいくつかの環境変数を渡したいと思います。私の考えは次のとおりです。ThymeleafとReactjsビルドとの競合

1)create-react-appを使用して、スタブReactJsアプリケーションを生成します。公共のindex.htmlファイルでは、「リソース/テンプレート」ディレクトリにカスタマイズされたタグ

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

2)コピーがビルドディレクトリからコードを生成

3)フロントエンドのコードを生成するnpm run buildを実行を定義

4)バックエンドのコントローラでは、

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

環境値を設定する。しかし、NPMで構築しようと、私はエラーを得たとき、私は、ステップ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として渡す必要があるかもしれません –

関連する問題