如何在Node.js应用中处理多环境(dev/prod)及多项目数据库隔离?
解决多项目多环境数据库切换问题
1. 调整启动脚本,明确传入环境变量
LoopBack3依赖NODE_ENV识别加载的配置文件,但你当前的start-P2脚本没指定这个变量,导致无法切换环境。修改package.json的scripts:
"scripts": { "heroku-prebuild": "npm install", "start-P2-dev": "NODE_ENV=dev node ./server/server.p2.js", "start-P2-prod": "NODE_ENV=prod node ./server/server.p2.js", "start-P1-dev": "NODE_ENV=dev node ./server/server.p1.js", "start-P1-prod": "NODE_ENV=prod node ./server/server.p1.js", "posttest": "npm run lint && nsp check", "devserver": "nodemon ./server/server.js" }
2. 确保p2服务文件加载对应环境的数据源
打开server.p2.js,确认它和p1的服务文件逻辑一致,根据NODE_ENV加载对应的数据源配置:
const loopback = require('loopback'); const boot = require('loopback-boot'); const app = loopback(); const env = process.env.NODE_ENV || 'dev'; // 加载p2对应环境的数据源配置 app.dataSource('mongodb', require(`./datasources.p2.${env}.json`)); boot(app, __dirname, (err) => { if (err) throw err; app.start(() => { console.log(`P2 ${env} 服务运行地址: ${app.get('url')}`); }); });
3. 创建对应环境的数据源配置文件
在server目录下创建以下4个配置文件:
datasources.p1.dev.json:p1开发环境数据库连接信息datasources.p1.prod.json:p1生产环境数据库连接信息datasources.p2.dev.json:p2开发环境数据库连接信息datasources.p2.prod.json:p2生产环境数据库连接信息
每个文件的配置示例(根据你的MongoDB实际信息修改):
{ "name": "mongodb", "connector": "mongodb", "url": "mongodb://localhost:27017/p2_dev", "host": "localhost", "port": 27017, "database": "p2_dev", "user": "", "password": "" }
4. 验证环境切换
启动p2开发环境:
npm run start-P2-dev
启动p2生产环境:
npm run start-P2-prod
此时检查MongoDB,p2会分别连接到对应的开发/生产数据库,p1同理。
内容的提问来源于stack exchange,提问作者Jason
相关产品推荐
相关产品推荐

