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

Rollup将自定义const变量识别为全局变量并添加$1后缀,咨询相关变量是否为JS全局变量及文档来源

Rollup将自定义const变量识别为全局变量并添加$1后缀,咨询相关变量是否为JS全局变量及文档来源

放心,C、E、Is、CFunc绝对不是标准JavaScript的全局变量——不管是ECMAScript官方标准,还是MDN收录的浏览器、Node.js全局对象里,都找不到这些标识符的身影。

出现这种情况,大概率是Rollup的作用域分析或者tree-shaking机制误判了,常见原因有这几个:

  • 你的项目里某个第三方依赖、编译插件(比如Babel相关插件、代码压缩插件)的内部逻辑里用到了这些变量名,和你的自定义变量撞了;
  • 你可能不小心把这些变量暴露到了全局作用域(比如在浏览器环境下没做模块包裹,变量默认挂载到window上),Rollup检测后误以为是外部全局变量,于是重命名避免冲突。

给你几个解决思路:

  1. 先检查Rollup配置文件,看看有没有在globals选项里误把这些变量标记成了全局外部变量;
  2. 如果是Rollup的误判,可以在变量定义的地方加上/*#__PURE__*/注释,明确告诉Rollup这是纯内部变量,不需要做全局冲突处理;也可以在Rollup配置的external选项里排除这些变量,让Rollup把它们当作内部模块变量处理;
  3. 排查一下项目依赖,看看有没有哪个第三方库偷偷在全局注入了这些奇怪的变量名。

如果最后确认没有实际的全局冲突,只是Rollup的误判,完全不需要修改你的变量名或者加命名空间,调整配置就能解决问题。

备注:内容来源于stack exchange,提问作者Sideways S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:17:58