首页 > 解决方案 > gradle spring boot 将环境变量传递给嵌入式 vuejs 应用程序

问题描述

我有一个使用 gradlespring boot 2嵌入vuejsfont-end的应用程序。该应用程序旨在托管在不同的服务器上,因此 vuejs 应用程序的 API url 必须是动态的。/static5.1

我能想到的最合理的解决方案是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 app。每次尝试都以process.env.API_IPbeing结束undefinedprocess.env总是只包含BASE_URLNODE_ENV

试过:

  1. export API_IP=*ip*然后运行 ​​spring boot 应用程序。
  2. 设置变量/etc/environment,注销,登录,运行spring boot app
  3. 将其作为运行参数传递-DAPI_IP=*api*
  4. JAVA_OPTS=-DAPI_IP=*api*

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

  1. 创建文件以inlinedConfScript包含API_IP=*api*JAVA_OPTS=-DAPI_IP=*api*/或仅包含每个文件。
  2. 在与具有相同值选项.conf的文件相同的目录中创建文件。.jar#5

请帮忙 :)

标签: javaspringspring-bootvue.jsenvironment-variables

解决方案


部分解决方案是从 vuejs 请求中删除 ip/domain 作为@tianzhipeng 的评论。8080但是,在这种情况下,我只能在端口上运行后端。


推荐阅读