我有一个spring boot 2
应用程序,它使用gradle vuejs
在/static
处嵌入了5.1
字体结尾。该应用程序旨在托管在不同的服务器上,因此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`;
}
渐变构建脚本:
bootJar {
dependsOn ':ui:jar'
into('BOOT-INF/classes/static') {
from "${project(':ui').projectDir}/dist"
}
launchScript {
properties 'inlinedConfScript': 'startScript'
}
}
但是,我无法将环境变量传递给vue应用。每次尝试都以process.env.API_IP
为undefined
结束。 process.env
始终仅由BASE_URL
和NODE_ENV
组成。
尝试过:
export API_IP=*ip*
,然后运行spring boot应用程序。/etc/environment
中设置变量,注销,登录并运行spring boot应用程序-DAPI_IP=*api*
JAVA_OPTS=-DAPI_IP=*api*
根据https://docs.spring.io/spring-boot/docs/current/reference/html/deployment-install.html:
inlinedConfScript
创建文件,其中包含API_IP=*api*
和JAVA_OPTS=-DAPI_IP=*api*
或仅包含其中一个。.conf
文件相同的目录中创建.jar
文件,并使用与#5
中相同的值选项。请帮助:)
答案 0 :(得分:0)
如果您使用的是Vue-cli:
您可以通过将.env文件放入您的文件中来指定env变量 项目根目录
一个环境文件仅包含以下项的键=值对 环境变量:
对于每个环境,您可以具有不同的.env文件,例如:
<% if current_user?(micro_post.user) %>
<%= link_to ' | Delete', micro_post_path(micro_post), method: :delete , data: { confirm: "Are you sure" } %>
<% end %>
,.env.production
,
https://cli.vuejs.org/guide/mode-and-env.html#environment-variables
答案 1 :(得分:0)
部分解决方案是从vuejs请求中删除IP /域作为@tianzhipeng的注释。但是在这种情况下,我只能在端口8080
上运行后端。