使用微信公众号查看统计数据 需先申请微信公众号(类型不限,个人,企业均可)
需要全局安装 pm2
npm install -g pm2
启动进程文件
npm i
本地开发
npm run dev
生产环境
npm run prd
在线查看 PM2 运行状态
https://app.pm2.io/
- 2020-08-24 增加数据库存储数据(Mongodb)
WechatStat
├─README.md
├─app.js
├─appRecord.js
├─ecosystem.config.js
├─package-lock.json
├─package.json
├─server
| ├─config.js
| ├─index.js
| ├─mixins.js
| ├─volume
| | ├─getVolume.js
| | ├─index.js
| | ├─old.js
| | ├─otc
| | | ├─202009
| | | | └20200918.json
| | ├─data
| | | ├─202009
| | | | └20200918.json
| ├─otc
| | └index.js
| ├─market
| | ├─ACCESS_TOKEN.dog
| | └index.js
| ├─fear
| | ├─ACCESS_TOKEN.dog
| | └index.js
| ├─charts
| | └makeCharts.js
├─router
| ├─README.md
| ├─index.js
| ├─router.config.js
| ├─hb
| | ├─_type
| | | └index.js
| ├─get
| | ├─wx-media
| | | └index.js
| | ├─chart
| | | └index.js
├─plugin
| ├─database.js
| ├─f2Charts.js
| ├─mongodb.js
| ├─prefix.js
| ├─utils.js
| ├─upload2wx
| | ├─ACCESS_TOKEN.dog
| | ├─accessToken.js
| | └index.js
├─execute
| ├─database.js
| ├─pm2demo.js
| ├─server.js
| └volume.js
├─config
| └index.js
treer -i "/^node_modules|chartsImg|^\.[\w+]/"
canvas画图表保存成图片,然后 http 请求返回图片类型
/v1/get/chart?limit=100&type=volume
根据请求参数生成对应类型的数据图表
之前是生成图片后存储返回图片路径,然后 ctx.body = fs.createReadStream(filePath)
但是存储的图片也没有其他用处,增加写入-读取的过程既浪费内存又浪费时间,
并且ctx.body
可以接受 stream,尝试一堆后直接 ctx.body = canvas.createPNGStream()
详见
./router/get/chart/index.js
大多范例中 node
模块会使用相对路径基于当前当前文件进行引用,
但是实际中这样使用很不方便,尤其引用的路径嵌套比较深
require(../../../../)
?????
其实node
中有相关方式来处理相关问题 = NODE_PATH
(这里简单介绍用法,详情官方文档)
描述一段示例,现有项目结构如下
app
├─index.js
├─utils.js
├─plugin
| ├─test1
| | └test1.js
| ├─test2
| | └test2.js
index.js
require('./plugin/test1/test1.js')
test1.js
require('../../utils.js')
test2.js 中引用 test1.js
require('../test1/test1.js')
然后运行index.js
node index.js
修改启动方式
NODE_PATH=./ node app.js
./` 表示当前运行目录
即从当前运行目录开始检索引用模块,然后
test1.js 修改为
require('utils.js')
test2.js 修改为
require('plugin/test1/test1.js')
~简单直观
pm2 可以在配置文件中添加,详见./ecosystem.config.js
相关问题:
公众号开发 调用【上传图文消息内的图片获取URL】接口时,返回 412 错误?
{
// `data` 是作为请求主体被发送的数据
// 只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'
// 在没有设置 `transformRequest` 时,必须是以下类型之一:
// - string, plain object, ArrayBuffer, ArrayBufferView, URLSearchParams
// - 浏览器专属:FormData, File, Blob
// - Node 专属: Stream
data: {
firstName: 'Fred'
},
}