You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Svelte使用@rollup/plugin-replace配置环境变量__myapp未定义问题问询

问题原因与修复方案

报错根因

  • 你参考的教程使用的是@rollup/plugin-replace v4.0以下的旧版本,v4.0+版本做了不兼容更新:不再支持直接在插件配置顶层写要替换的键值对,必须统一放到values配置项中,所以你第一种配置里的__myapp替换规则根本没有生效。
  • 新版本插件默认开启了preventAssignment: true配置,会拦截对赋值语句左侧标识符的替换,也会影响部分嵌套对象引用场景的替换逻辑。
  • 第一种配置没有提前执行config()加载dotenv,虽然单次调用config().parsed也能获取配置,但重复调用会产生不必要的解析开销。

修正方法

修改rollup配置

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

// 提前加载.env内容到process.env
config()

plugins: [
        // 环境变量配置
        replace({
            // 所有替换规则统一放到values字段
            values: {
                __myapp: JSON.stringify({
                  env: {
                    isProd: production,
                    ...config().parsed
                  }
                }),
            },
            // 关闭赋值拦截开关
            preventAssignment: false
          }),
        // 其他原有插件(如svelte、commonjs等)保持不变
]

注意:replace插件必须放在plugins数组的最前位,保证在其他插件编译代码前完成变量替换,避免引用失效。

代码调用规范

直接在业务代码中引用即可,不要给__myapp加引号:

const API_ID = __myapp.env.API_ID

内容的提问来源于stack exchange,提问作者user3873617

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:15:01