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

纯Bun项目中import.meta.env与Bun.env未定义问题咨询

问题原因及解决办法

为什么Bun.env用不了?

Bun.env是Bun后端运行时的专属API,浏览器前端环境里根本没有这个对象,你的代码跑在浏览器里,自然会报错。这个变量只能在Node.js风格的后端脚本、API路由里用,前端别碰。

为什么import.meta.env未定义?

你在bunfig.toml里写的[serve.static]配置是给Bun静态文件服务用的,但你启动的是React开发服务,这个配置根本不生效。要让前端能拿到import.meta.env,得改配置:

正确配置方式

修改bunfig.toml,添加[define]字段来注入环境变量:

# 方式1:逐个指定
[define]
"import.meta.env.BUN_PUBLIC_FOO" = JSON.stringify(process.env.BUN_PUBLIC_FOO)
"import.meta.env.BUN_PUBLIC_BAR" = JSON.stringify(process.env.BUN_PUBLIC_BAR)

# 方式2:通配符批量注入(Bun 1.2+支持)
[define]
"import.meta.env.BUN_PUBLIC_*" = true

另外,也可以不用手动写define,确保用项目默认的dev脚本启动(即package.json里的bun run dev,本质和你写的bun --hot src/index.tsx一致,但Bun会自动处理环境变量的注入逻辑)。

为什么process.env能正常用?

Bun为了兼容Node.js生态,打包前端代码时会自动把process.env里带BUN_PUBLIC_前缀的变量注入到浏览器环境里,所以能正常读取,但这是兼容写法,前端更推荐用标准的import.meta.env。

验证步骤

改完配置重启开发服务,再看前端控制台,import.meta.env的变量就能正常输出了。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:22:45