SvelteKit项目中如何在application.yml中使用环境变量
解决SvelteKit项目中application.yml密钥环境化的问题
首先明确:你提到的projectRoot/app/src/main/resources/application.yml是Java Spring Boot后端的配置文件,和SvelteKit前端的frontend/.env分属两个独立运行环境,无法直接交叉引用。以下分场景给出可行方案:
一、针对Spring Boot后端的application.yml配置
你之前用{{secrets.secret1}}的模板语法不符合Spring Boot规则,所以无效。正确的配置方式如下:
使用Spring原生环境变量引用语法
在application.yml中用${变量名}引用环境变量,示例:# application.yml your-business-config: secret1: ${SECRET1} secret2: ${SECRET2}三种设置环境变量的方式
- 系统环境变量:直接在操作系统中定义
SECRET1=xxx、SECRET2=xxx,Spring Boot会自动读取。 - 后端专属
.env文件:在projectRoot/app目录下创建.env文件(务必加入.gitignore避免提交),内容如下:
然后给Spring Boot项目添加SECRET1=secretValue SECRET2=secretValuespring-boot-starter-dotenv依赖(Maven/Gradle均可),让后端自动加载该.env文件。 - 本地配置文件:在
src/main/resources下创建application-local.yml(加入.gitignore),内容:
启动后端时添加启动参数your-business-config: secret1: secretValue secret2: secretValue--spring.profiles.active=local,激活本地配置。
- 系统环境变量:直接在操作系统中定义
二、针对SvelteKit前端的密钥配置
如果这些密钥是给前端代码使用的,无需在application.yml中配置,直接利用frontend/.env处理:
在
frontend/.env中定义变量:# frontend/.env PRIVATE_SECRET1=secretValue # 私有变量,仅能在SvelteKit服务器端代码中访问 PUBLIC_SECRET2=publicValue # 公开变量,需加PUBLIC_前缀才能在浏览器端访问在SvelteKit代码中引用:
<!-- 服务器端组件/路由中引用私有变量 --> <script> import { env } from '$env/static/private'; console.log(env.PRIVATE_SECRET1); </script> <!-- 浏览器端组件中引用公开变量 --> <script> import { env } from '$env/static/public'; console.log(env.PUBLIC_SECRET2); </script>
总结
你之前用values.yml加模板引用的方法不适用于Spring Boot,所以无效。先明确密钥的使用场景(后端/前端),再对应上述方案配置即可。
内容的提问来源于stack exchange,提问作者TheGreatZackAttack
相关产品推荐
相关产品推荐

