首页 > 解决方案 > Svelte 中的环境变量 - __myapp 未定义

问题描述

我正在尝试在我的 Svelte 应用程序上设置环境变量以隐藏 API 密钥。

我按照本文中的说明进行操作 [https://medium.com/dev-cafe/how-to-setup-env-variables-to-your-svelte-js-app-c1579430f032]。

这是我的 rollup.config.js 的结构

import { config as configDotenv } from 'dotenv';
import replace from '@rollup/plugin-replace';

configDotenv();

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

当我尝试通过调用访问 env var 时:__myapp.env.API_KEY

我收到此错误:__myapp is not defined

标签: javascriptenvironment-variablessvelte

解决方案


似乎嵌套是问题所在。我能够使用以下语法使其工作:

replace({
  'process.env.isProd': production,
  'process.env.amplitude_api_key': process.env.amplitude_api_key
}),

然后process.env.isProd在您的应用程序中使用。当然,如果你喜欢这个__myapp东西,你可以使用__myapp而不是process在你的汇总配置中替换功能的左侧。


推荐阅读