express启用https使用小记


Posted in Javascript onMay 21, 2019

微信小程序的服务器域名只支持https和wss,我用nodejs的express作为后端服务,经百度和折腾,成功启用https服务。

总结以下几步,供参考。

1.申请SSL证书

笔者用的是腾讯云,申请的是为期一年免费的证书,具体申请步骤不展开介绍,颁发证书后,得到文件:

express启用https使用小记

需要用到的文件在文件夹IIS中。

express启用https使用小记

2.将证书放到项目中

将后缀为.pfx的证书文件放到express项目的静态文件夹中,笔者放在项目根目录下的public文件夹下。

express启用https使用小记

3.在express的index.js中引用证书

import express from 'express';
import fs from 'fs';
import path from 'path';
import bodyParser from 'body-parser';
// 引入history模块
import history from 'connect-history-api-fallback';
import https from 'https';
const app = express();
const options = {
  pfx: fs.readFileSync(path.join(__dirname, 'public','www.****.***.pfx')),
  passphrase: '***********'
};
//options有两个选项,一个是证书本体,一个是密码(刚刚的IIS文件夹的keystorePass.txt文件中)
let server = https.createServer(options,app);
app.use(history());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(express.static(path.join(__dirname, 'public')));
app.use("/static/file",express.static(path.join(__dirname, 'public')));
app.use(function (req, res, next) {
  var err = new Error('Not Found');
  err.status = 404  next(err)});
// error handler
app.use(function (err, req, res, next) {
  res.status(err.status || 500);
  console.log(err);
  res.send(err.message)
});
// 设置监听端口
const SERVER_PORT = 3000;
server.listen(SERVER_PORT, (req, res) => {
  console.info(`服务已经启动,监听端口${SERVER_PORT}`)
})
export default app

引入https模块,设置options配置。

如上述代码,options有两个选项,一个是证书本体,一个是密码(刚刚的IIS文件夹的keystorePass.txt文件中)

之后定义server,传入option和express实例app,设置监听端口即可。

4.启动服务

将后端项目部署到服务器中,启动express,可正常访问https服务。

后言

笔者大四下,很遗憾之前完成毕业设计那段时间没有坚持写文章。

目前全栈开发了一款微信小程序,刚上线不久。还写了一款桌面程序,不过引入微信支付不太顺利。

希望能把自己的经验和遇到的坑多多写成文章记录下来,对同样有兴趣的朋友提供参考。也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
漂亮的widgets,支持换肤和后期开发新皮肤
Apr 23 Javascript
Jquery中dialog属性小记
Sep 03 Javascript
js获取时间(本周、本季度、本月..)
Nov 22 Javascript
jQuery UI设置固定日期选择特效代码分享
Aug 27 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
Aug 09 Javascript
JS碰撞运动实现方法详解
Dec 15 Javascript
JS小数转换为整数的方法分析
Jan 07 Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
Jul 12 Javascript
JavaScript中使用Async实现异步控制
Aug 15 Javascript
zTree节点文字过多的处理方法
Nov 24 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
Oct 18 Javascript
在vue中使用Echarts画曲线图的示例
Oct 03 Javascript
使用express获取微信小程序二维码小记
May 21 #Javascript
小程序server请求微信服务器超时的解决方法
May 21 #Javascript
深入浅析nuxt.js基于ssh的vue通用框架
May 21 #Javascript
用node.js写一个jenkins发版脚本
May 21 #Javascript
vue-router源码之history类的浅析
May 21 #Javascript
vue 地图可视化 maptalks 篇实例代码详解
May 21 #Javascript
vue 中使用 watch 出现了如下的报错的原因分析
May 21 #Javascript
You might like
PHP分页显示制作详细讲解
2006/12/05 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
php实现mysql备份恢复分卷处理的方法
2014/12/26 PHP
Yii2框架dropDownList下拉菜单用法实例分析
2016/07/18 PHP
jquery中eq和get的区别与使用方法
2011/04/14 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
页面按钮禁用与解除禁用的方法
2014/02/19 Javascript
js用拖动滑块来控制图片大小的方法
2015/02/27 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
2015/05/19 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
vue-以文件流-blob-的形式-下载-导出文件操作
2020/08/07 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python动态监控日志内容的示例
2014/02/16 Python
Python内置函数的用法实例教程
2014/09/08 Python
Python中asyncore异步模块的用法及实现httpclient的实例
2016/06/28 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
django formset实现数据表的批量操作的示例代码
2019/12/06 Python
基于Python数据结构之递归与回溯搜索
2020/02/26 Python
基于Python快速处理PDF表格数据
2020/06/03 Python
python中if嵌套命令实例讲解
2021/02/25 Python
CSS3属性box-shadow使用详细教程
2012/01/21 HTML / CSS
爱淘宝:淘宝网购物分享平台
2017/04/28 全球购物
英国蛋糕装饰用品一站式商店:Craft Company
2019/03/18 全球购物
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
英语演讲稿范文
2014/01/03 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
国庆节活动总结
2014/08/26 职场文书
2014年教师党员自我评价范文
2014/09/22 职场文书
作弊检讨书范文
2015/05/06 职场文书
漫画《催眠麦克风-Dawn Of Divisions》第二卷PV公开
2022/04/05 日漫
Golang流模式之grpc的四种数据流
2022/04/13 Golang