簡體   English   中英

Gradle Spring Boot將環境變量傳遞給嵌入式vuejs應用

[英]gradle spring boot pass environment variables to embedded vuejs app

我有一個使用gradle 5.1/static帶有嵌入式vuejs字體結尾的spring boot 2應用程序。 該應用程序旨在托管在不同的服務器上,因此vuejs應用程序的API網址必須是動態的。

我能想到的最合理的解決方案是在服務器上設置API_IP環境變量,然后讓vuejs應用程序像這樣檢索它們:

let url = `http://${process.env.API_IP}:9090/api`;

if (process.env.NODE_ENV === 'development') {
    url = `http://localhost:8090/api`;
}

gradle構建腳本:

bootJar {
    dependsOn ':ui:jar'

    into('BOOT-INF/classes/static') {
        from "${project(':ui').projectDir}/dist"
    }

    launchScript {
        properties 'inlinedConfScript': 'startScript'
    }
}

但是,我無法將環境變量傳遞給vue應用。 每次嘗試都以undefined process.env.API_IP結尾。 process.env始終僅由BASE_URLNODE_ENV

嘗試:

  1. export API_IP=*ip* ,然后運行spring boot應用程序。
  2. /etc/environment設置變量,注銷,登錄,運行spring boot應用程序
  3. 將其作為運行參數-DAPI_IP=*api*
  4. 設置JAVA_OPTS=-DAPI_IP=*api*

根據https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html

  1. 為內inlinedConfScriptAPI_IP=*api*創建文件, inlinedConfScript文件包含API_IP=*api*JAVA_OPTS=-DAPI_IP=*api*或僅一個。
  2. 在與.jar文件相同的目錄中創建.conf文件,並使用與#5相同的值選項。

請幫忙 :)

部分解決方案是從vuejs請求中刪除IP /域作為@tianzhipeng的注釋。 但是在這種情況下,我只能在8080端口運行后端。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM