今天折腾了一天njs,差点把键盘给砸了!事情是这样的,上周接了个新项目要用到nginx扩展,同事甩给我一句“用njs”就溜了。结果刚上手就踩了满脚泥巴坑,气得我直薅头发。
装完环境立马卡壳
兴冲冲打开官网照着教程装插件,满以为复制粘贴就能跑起来。啪!直接在里加了句js_import *想测个hello world,重启服务直接报错:
- 致命问题:nginx死活提示
js_import指令不合法 - 懵逼时刻:翻手册才发现装的是社区版插件,结果nginx主程序版本太老了
当时真想把电脑扔了——折腾半小时才发现得重新编译nginx!对着GitHub上编译参数死磕,折腾到下午三点才把环境怼起来。
调异步差点把头发薅光
想着赶紧写个接口测试异步调用。信心满满敲完代码:
function getData(r){*('API地址').then(reply => *(200))
结果请求直接卡死!浏览器转圈转到天荒地老,nginx日志里满屏报错:js: function completed with pending subrequest
叼着面包蹲在路由器旁边查文档,突然看到一行小字:必须用js_content处理异步,location里不能用return!赶紧把改成才让进度条动起来。
字符集搞崩心态
眼瞅着快下班了,想着测试个中文返回。简单写个:
*['Content-Type'] = 'text/html; charset=utf-8'*(200, "测试文本")
页面直接显示成火星文:æµè¯ææ¬!气得我狂拍大腿——查了两小时才发现js_content默认二进制传输,得手动转码!塞了句new TextDecoder().decode(data)才让汉字老实显示。
折腾一整天
- 编译nginx时千万别走神,手抖选错选项就得重来半小时
- 遇到异步报错先开
nginx -V查插件支持情况 - 见到乱码别急着改代码,先检查文件是不是存成ANSI了
搞完瘫在椅子上啃面包,突然想起件更郁闷的事:团队咖啡机上周坏了没人修。这破机器每次出奶泡都要死机三次,行政非说要等厂家下个月来修。现在写代码没咖啡提神,改个配置都得打瞌睡三回——技术债没还完,生活债又堆成山了!
