莫一哲

折磨我的老腰啊,可是这个小家伙依然没有出来的意思 2018-09-13 19:40 by fifsky

技术文章迁移

由于工作原因,今年开始采用nodejs编写了大量代码,因此开始喜欢上这门语言,加上对markdown的偏爱,决定开始采用markdown来记录技术笔记,一方面代码高亮比较容易处理,另一方面静态博客逐渐成为主流,所以采用hexo和github pages搭建了技术笔记的博客,这边的技术内容全部删除了,转移到blog.fifsky.com(导航技术栏),目前文章不多,因为之前很多笔记都是记录到Evernote里面了,后面有时间陆陆续续整理分享出来,很多都是自己平时工作遇到的问题,解决方案大多也是google查询到的,分享出来也希望能对新人有所助益。

ngrok证书错误

最近项目里面需要用到ngrok代理本地vnc实现远程协助功能,于是要在服务器搭建一个ngrok server并且编译一个windows i386的ngrok client,但是编译后的程序连接server的时候始终提示证书错误

 [WARN] [tun:15dd7522] Failed to read message: remote error: bad certificate

但是我仔细核对了证书域名,并且重新编译了多次依旧有问题,参见文章

http://tonybai.com/2015/03/14/selfhost-ngrok-service/

http://www.haiyun.me/archives/1012.html


最后实在没办法,发现ngrok客户端有日志参数-log=log.txt,发现一个证书过期的错误,后来发现是自己XP的虚拟机的时间和当前时间不同步了,调整为当前时间之后即可,记录在这里希望对遇到同样问题的人有所帮助,另附加一个windows下ngrok后台执行的命令


 start /b ./ngrok -config=ngrok.cfg -log=stdout -log-level=WARNING start vnc > ngrok.log 2>&1


nodejs中对已加载的模块进行重载

最近开发nwjs的时候,有一个需求需要重新加载nodejs已经加载过的module,在nodejs的机制里面一个module只会加载一次,比如


var api = require("./lib/api");

然后在其他任意地方require这个api模块都不会再重新载入,而是直接从require.cache里面获得,可以console.log(require.cache)查看,既然知道原理,重载就比较容易些了


 //重新加载已经被加载过的nodejs模块
var reload = function (name) {
    var id        = global.require.resolve(name),
        old_cache = global.require.cache[id];
    delete global.require.cache[id];
    try {
        return global.require(id);
    } catch (e) {
        return old_cache;
    }
};
api = reload("./lib/api");


代码比较简单,基本就是delete删除cache,然后重新require


  • 1
返回顶部