javascript - Svelte 框架 : environment variables not appearing in svelte app

标签 javascript environment-variables svelte rollupjs

我正在尝试在我的 svelte 应用程序中使用环境变量。我已经安装了 @Rollup/plugin-replacedotenv。我创建了一个 .env 文件来保存我的 API_KEY 并将以下内容添加到 rollup.config.js 中的 plugins来自这个Medium article :

plugins: [
  replace({
    __myapp: JSON.stringify({
      env: {
        isProd: production,
        API_URL : process.env.API_URL
      }
    }),
  }),
]

在我的应用程序的精巧组件中,我将通过以下方式访问我的 API key

const apiUrl = __myapp.env.API_URL

有效。然而,几天后我遇到了身份验证问题,经过一些调试后我发现 __myapp.env.API_URL 通过尝试将其打印到控制台返回 undefined

然后我尝试将 replace 调用更改为仅 replace({'API_KEY': process.env.API_KEY})console.log(API_KEY) 仍然显示 undefined。我通过尝试使用它用一些字符串替换一些变量来测试 replace 并且它有效以确认汇总工作正常。所以,我怀疑问题出在 process.env.API_KEY 但我不确定。我尝试访问环境变量时可能做错了什么?

(一些背景:我正在使用 sveltejs/template 作为构建我的应用程序的模板)

最佳答案

dotenv不会注册您的 .env vars 直到你打电话 config ,这就是为什么 process.env.API_KEY当您尝试访问它时未定义。

在您的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({ ... })
   ]
}

关于javascript - Svelte 框架 : environment variables not appearing in svelte app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63006017/

相关文章:

java - 在 OS X Mavericks 中设置 Java_home 环境变量

svelte - 如何在 Svelte 中跨多行进行 react 性分配?

svelte - (!) 插件 slim : No custom element 'tag' option was specified

svelte - 如何在 svelte 3 中强制渲染?

environment-variables - Inno Setup-设置Java环境变量

javascript - 如何在客户端的 react 组件内调用 Meteor.call?

javascript - chrome 不渲染 gif 背景图片

javascript - 如何在 Node.js 快速路由中拦截 send() 或 render()

在 C 中连接一个环境变量和一个字符串并提供给 fopen()

javascript - 单击行时获取表中隐藏列的值