Bun.js中Drizzle-Kit无法读取.env.test等环境文件的问题
解决Drizzle Kit在Bun.js下读取指定.env文件的问题
方法1:命令行指定.env文件
Bun支持通过--env-file参数直接指定要加载的环境变量文件,执行Drizzle命令时加上该参数即可:
# 测试环境生成迁移文件 bun --env-file=.env.test run drizzle-kit generate # 测试环境推送schema变更 bun --env-file=.env.test run drizzle-kit push # 测试环境执行迁移 bun --env-file=.env.test run drizzle-kit migrate
为了方便日常使用,可以在package.json中配置对应脚本:
{ "scripts": { "drizzle:gen:test": "bun --env-file=.env.test run drizzle-kit generate", "drizzle:push:test": "bun --env-file=.env.test run drizzle-kit push", "drizzle:migrate:test": "bun --env-file=.env.test run drizzle-kit migrate" } }
之后直接运行bun run drizzle:gen:test即可调用测试环境的配置。
方法2:通过NODE_ENV自动加载对应环境文件
Bun会根据NODE_ENV的值自动加载匹配的环境文件,加载优先级为:.env < .env.local < .env.[NODE_ENV] < .env.[NODE_ENV].local,后续文件的变量会覆盖前面的。
如果希望测试环境使用.env.test的配置,只需在执行命令前设置NODE_ENV=test:
NODE_ENV=test bun run drizzle-kit generate
注意:这种方式下Bun仍会加载.env文件,若.env中存在DATABASE_URL,会被.env.test中的值覆盖。如果需要完全隔离环境,优先使用方法1。
额外说明
你的drizzle.config.ts无需修改,只要环境变量正确加载,process.env.DATABASE_URL就能获取到对应环境的值。
内容的提问来源于stack exchange,提问作者Anas
相关产品推荐
相关产品推荐

