我正在尝试在我的 svelte 应用程序中使用环境变量。我已经安装了@Rollup/plugin-replace
and dotenv
。我创建了一个.env
文件来保存我的API_KEY
并将以下内容添加到plugins
in rollup.config.js
由此中等文章 https://medium.com/@firthous.dev/how-to-setup-env-variables-to-your-svelte-js-app-c1579430f032:
plugins: [
replace({
__myapp: JSON.stringify({
env: {
isProd: production,
API_URL : process.env.API_URL
}
}),
}),
]
在我的应用程序的 svelte 组件中,我将通过以下方式访问我的 API 密钥
const apiUrl = __myapp.env.API_URL
这有效。然而,几天后我遇到了身份验证问题,经过一些调试后我发现__myapp.env.API_URL
正在返回undefined
尝试将其打印到控制台。
然后我尝试改变replace
打电话给刚刚replace({'API_KEY': process.env.API_KEY})
and console.log(API_KEY)
仍在显示undefined
。我测试过replace
通过尝试使用它用一些字符串替换一些变量并且它有效,从而确认汇总工作正常。所以,我怀疑问题出在process.env.API_KEY
但我不确定。我尝试访问环境变量时可能做错了什么?
(一些背景:我正在使用sveltejs/模板 https://github.com/sveltejs/template作为构建我的应用程序的模板)
dotenv
不会注册您的.env
vars直到你打电话config
, 这就是为什么process.env.API_KEY
当您尝试访问它时,它是未定义的。
In your rollup.config.js
你可以做:
import { config as configDotenv } from 'dotenv';
import replace from '@rollup/plugin-replace';
configDotenv();
export default {
input: 'src/main.js',
...
plugins: [
replace({
__myapp: JSON.stringify({
env: {
isProd: production,
API_URL: process.env.API_URL,
},
}),
}),
svelte({ ... })
]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)