一、背景
最近接手了公司的物流云平台,技术框架是武大的一个教授定的,具体为什么这么定,其中细节我就不过多提了。
技术架构:nodejs loopback(业务层)+java hibernate(数据连接层)+redis(持久层),数据库用的oracle,采用的是nodejs+java+javascript混合编程的模式,前端在VS CODE编辑器中做了个第三方的UI组件库,可进行可视化界面拖拽设计,自动生成ejs和设计文件以及一个初始化的init.js文件。
这刚刚接手,公司仓库使用者那边遇到个问题,在报表查询中输入上一周的2017/07/31-2017/08/06查询条件时报了个错,之前是好的(我也没动代码呀,这就尴尬了)。
二、调试定位
我用的IDE是VS CODE(之前是做.NET,这你就懂了,也是因为公司做的UI插件库也只能在VS CODE中运行),在VS CODE中调试Nodejs的过程很是痛苦,这个框架的调试大多是通过打印来进行定位的,前端的用JavaScript的console.log,后端用的java.lang.System.out.pringln(现在真心感觉到了VS Studio编辑器的强大,以前别人说VS Studio是最好的IDE还不信),报错的这个业务块中有超级多的sql语句,涉及到的业务比较复杂,所以只能通过不停的打印sql语句来进行定位哪个sql语句报错了,最终找到了,奉上截图:
定位到是这里parseInt转换的问题
三、试错过程
parseInt("08")转换失败了,parseInt("07")转换成功,开始时间8月份也失败,9月份也失败,然后就很懵逼了,只有8月份和9月份转换失败(NaN),然后就百度搜索了,一搜果然有结果了,附上链接地址点开,感谢这位博主。
然后也上了W3School官网
四、总结
用了这么多年的JavaScript的parseInt,第一次遇到这种问题,可以看出JavaScript基础之薄弱(呵呵),所以凡是都要刨根问底,知其然还要知其所以然,要不又会犯这种低级错误(虽说代码不是我写的,但还是通过百度搜索解决的,尴尬),稳固根基从此时此刻开始。