2019-01-04
[2019-01-24]调用Node http server的close方法, 不会马上停止服务器
[2019-01-24]Mac压缩文件避免生成__MACOSX
文件
[2019-01-19]小程序this.selectComponent is not a function
[2019-01-11]小程序异步api中complete回调的触发时机
[2019-01-10]低版本微信小程序因没有把页面声明到app.json报错, 会导致其他页面加载出错
[2019-01-08]url encode, space被encode成+
号
[2019-01-04]安卓微信 7.0 版本下, 默认不信任用户证书
调用Node http server的close方法, 不会马上停止服务器
开发中发现, 主动调用http.Server的close方法, 服务器并不会马上关闭
后来发现是Server(包括koa和express)的response的header中Connection
为keep-alive
当Connection
为keep-alive
时, 只有所有的客户端都断开连接之后, server才会真正的关闭.
如果想调用close方式及时停止server的话(如自己的测试服务器), 已express为例
const app = express();
app.use(express.static('static/path', {
setHeaders: function (res, path, stat) {
res.set('Connection', 'Close');
}
}));
// https://github.com/nodejs/node-v0.x-archive/issues/9066
app.use(function (req, res, next) {
res.set('Connection', 'Close');
next();
});
[2019-01-24]Mac压缩文件避免生成__MACOSX
文件
如果使用MacOS系统自带的压缩工具, 生成的压缩包在其他系统(windows/linux)系统下解压, 会多出一个__MACOSX文件夹.
如果要避免生成这个文件, 可以使用命令行的zip命令.
zip -r zip.zip .
# 如果上述命令不好使, 则使用zip -x选项
zip -r zip.zip . -x "__MACOSX"
[2019-01-19]小程序this.selectComponent is not a function
除去基础库的版本之外, 只有使用了自定义组件的组件或页面实例才会有selectComponent这个api
就是如果对应的page.json/component.json中没有usingComponents字段, 则对应的实例中不会有selectComponent方法
[2019-01-11]小程序异步api中complete回调的触发时机
之前有在request api的complete回调中上报接口耗时
const start = new Date().getTime();
wx.request({
// ....
complete: function () {
const end = new Date().getTime();
const cost = end - start;
// 上报cost
}
});
后面查看数据的时候发现请求的耗时偏大, 才想起complete回调的触发时机应该不是即时的. 简单的测试下来就可以确认success/fail回调和complete回调是顺序执行的.
wx.getSystemInfo({
success: function () {
console.log(new Date().getTime());
for (let index = 0; index < 10000000; index++) {
const a = new Date();
}
console.log(new Date().getTime());
},
complete: function () {
console.log(new Date().getTime());
}
})
[2019-01-10]低版本微信小程序因没有把页面声明到app.json报错, 会导致其他页面加载出错
微信版本6.6.6对应小程序基础库版本2.0.9, 如果一些页面已经调用了Page(page)生成页面实例, 但是却没有在app.json中进行声明, 可能会导致报错
pages/xxxx/yyyy has not been declared in app.json
可能会导致后续的页面的实例化错误.
具体原因没有进行详细的测试, 不过把对应页面的代码(js/json/wxml/wxss)删除之后就正常了
[2019-01-08]url encode, space被encode成+
号
开发的时候有个需求要对是把数据传递给后端, 然后后端校验处理后又传递给了另一个客户端. 其中数据有中有类似2019/01/09 18:49:23
这样的时间戳.
调试的时候发现, 数据中的时间戳经过传输过程中的encode和decode之后, 最终客户端拿到的数据变成了2019/01/09+18:49:23
关于这个行为可以看下这个问题When to encode space to plus (+) or %20?
很好解释了空格什么之后会被encode成+
或%20
[2019-01-04]安卓微信 7.0 版本下, 默认不信任用户证书
安卓微信7.0版本, 已默认不信任用户安装的证书, 会导致代理/抓包工具无法正常使用.
可临时使用http
进行调试/抓包等. 或者使用安卓7.0以下的版本(注意微信7.0版本和安卓7.0版本的区别)进行调试.
现在好像抓包又没有问题了, 难道又改过来了?
小程序注意要勾选不校验域名和https
的选项, 且要打开调试模式. 没有打开调试模式的时候感觉默认都是以线上环境的标准在运行.