纯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
相关产品推荐
相关产品推荐

