推送至GitHub前,如何在.env文件中正确存储数据库凭据
用.env管理Knex开发环境数据库凭据并安全提交到GitHub
安装dotenv包
执行命令安装仅在开发环境使用的dotenv:npm install dotenv --save-dev # 用yarn的话执行 yarn add dotenv --dev创建并配置.env文件
在项目根目录新建.env文件,填入你的开发环境数据库信息:DEV_DB_NAME=你的开发数据库名称 DEV_DB_USER=你的数据库用户名 DEV_DB_PASSWORD=你的数据库密码 DEV_DB_HOST=localhost DEV_DB_PORT=5432配置.gitignore
打开项目根目录的.gitignore(没有就新建),添加一行:.env注意:不要把knexfile.js加入.gitignore,生产环境的配置逻辑需要随代码提交。
修改knexfile.js读取.env变量
在knexfile.js最顶部加入dotenv加载代码,然后替换开发环境的硬编码配置:require('dotenv').config(); module.exports = { development: { client: 'postgresql', connection: { database: process.env.DEV_DB_NAME, user: process.env.DEV_DB_USER, password: process.env.DEV_DB_PASSWORD, host: process.env.DEV_DB_HOST || 'localhost', port: process.env.DEV_DB_PORT || 5432 }, pool: { min: 2, max: 10 }, migrations: { tableName: 'knex_migrations' } }, production: { client: 'postgresql', connection: process.env.DATABASE_URL, pool: { min: 2, max: 10 }, migrations: { tableName: 'knex_migrations' } } };这里给host和port加了默认值,避免.env未配置时出错。
测试配置有效性
运行开发环境的Knex命令验证连接,比如执行迁移:knex migrate:latest --env development如果能正常执行,说明配置没问题。
提交代码到GitHub
确认.gitignore已包含.env后,执行提交命令:git add . git commit -m "切换为dotenv管理开发环境数据库凭据" git push这样knexfile.js会被正常提交,但包含敏感信息的.env不会被推送到仓库,同时生产环境的DATABASE_URL配置不受影响。
内容的提问来源于stack exchange,提问作者vygrdev
相关产品推荐
相关产品推荐

