Svelte 中的环境变量 - __myapp 未定义

Posted

技术标签:

【中文标题】Svelte 中的环境变量 - __myapp 未定义【英文标题】:Env vars in Svelte - __myapp is not defined 【发布时间】:2021-12-14 12:15:40 【问题描述】:

我正在尝试在我的 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
           
        )
      ),
]

当我尝试通过调用来访问环境变量时:__myapp.env.API_KEY

我收到此错误:__myapp is not defined

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

以上是关于Svelte 中的环境变量 - __myapp 未定义的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Svelte 中加载环境变量

Svelte 框架:在运行时将环境变量传递给客户端包

全局初始化失败:BadValue 无效或未设置用户区域设置。请确保正确设置 LANG 和/或 LC_* 环境变量

基于 prop 在 svelte 中循环

Spring Boot application.yaml中多个默认环境变量的语法

未定义变量:Laravel 5.3 中的 _ENV