Nodejs快速搭建项目_区分生产和测试环境

问题:测试环境和生产环境不是同样的数据库或者配置不一样,那么上线的时候总不能改代码吧?那么如果实现一键部署呢?

实现:
那么我就来快速搭建并且测试一下,步骤如下。
1、你已经成功安装了node。
2、快速搭建一个项目:使用express的应用程序生成器npx express-generator。具体实现如下:https://www.expressjs.com.cn/en/starter/generator.html
按照上个链接创建项目,使用npm start命令正常启动,通过浏览器访问http://localhost:3000/就可以检测是否成功启动。
看代码:
其实我们可以看到这个demo已经区分了生产或者测试的启动端口设置了,见bin/www的文件,部分代码如下:

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);
/**
 * Create HTTP server.
 */
var server = http.createServer(app);

扩展:如果我在不改代码的情况下,想使用8083端口启动,怎么办?

	set PORT=8083 & npm start

结果如下:
在这里插入图片描述
3、代码中区分环境。
第2步的例子只是可以区分端口,但是如果想区分数据库或者redis的连接,上面的步骤是远远不够的。那么如果能实现零配置进行启动呢?
最简单的想法:弄一个配置文件,在发布之前修改配置文件是测试还是生产。但是注意,只要是需要人工干预的,都是有可能出现问题的,那就是会忘记…
我们可以使用以下办法,让其动态实现:
1、在根目录创建config目录,以下(1)(2)(3)步都是存在于config目录下
(1)创建测试或者开发环境的development.js类

module.exports={
    sql:{
        sqlServer: 'TestServer',
        sqlDatabase:'TestDatabase',
        salUser:'testUser',
        sqlPwd:'testPwd'
    }
}

(2)创建生产环境的production.js类

module.exports={
    sql:{
        sqlServer: 'ProdServer',
        sqlDatabase:'ProdDatabase',
        salUser:'ProdUser',
        sqlPwd:'ProdPwd'
    }
}

(3)创建动态读取的类choise.js

var path=require('path')

//通过NODE_ENV来设置环境变量,如果木有指定则默认为生产环境
var env=process.env.NODE_ENV || 'production';
env=env.toLowerCase();
//载入配置文件
var file=path.resolve(__dirname,env);
try {
    module.exports=require(file)
} catch (error) {
    throw error;
}

(4)引入环境代码
在route/index.js文件中,新增choise.js的引入,并且打印和返回最终获取的环境信息,最终代码如下:

var express = require('express');
var router = express.Router();
var choise=require('../config/choise.js')

/* GET home page. */
router.get('/', function(req, res, next) {
  console.log(choise.sql)
  res.render('index', { title: choise.sql.sqlServer });
});
module.exports = router;

(5)进行测试,创建production.bat文件,此bat文件是window环境的,直接在文件夹目录找到此文件,双击即可启动

set NODE_ENV=production
set PORT=8083
npm start

(6)查看结果,结果图如下
在这里插入图片描述
(7)以上就是结果,如果你要创建开发或者测试环境的,按照第(5)步一样的形式就行了,比如我创建了development.bat,代码如下:—没有设置端口,但是因为www文件中,如果没有设置默认是3000

set NODE_ENV=development
npm start

那么结果图如下:
在这里插入图片描述

以上就是搭建并测试了一个区分环境的步骤,如有疑问可留言哦~~~

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值