egg.js项目,PRD出现了一个bug,急需处理,而Debug(调试)是解决问题最快途径。
想起之前写过的一篇文章,但发现Debug(调试) 和 unit test(单元测试)不是一回事,Debug才比较适用。
于是,研究了egg.js的调试。
• Vscode 安装扩展 eggjs
• 添加 Egg Debug,马上就会弹出一个launch.json,保存即可。
• 设置断点(可以设置多个),然后点三角形启动。
• 第一次启动失败。
因为debug模式下,数据库的配置是读取config\config.local.js,数据库连接异常。异常有多种原因:
(1) 地址、用户名、账号错误;
(2) IP没有权限访问,如阿里云就要去添加白名单,如果是Linux下的mysql就要用命令添加权限:
grant all privileges on 数据库.* to '用户名'@'IP' with grant option;
• PRD 调试。
突然,想起反正数据是要插入数据库的,也只有一条。于是,直接连PRD数据库。然后,为了方便把代码回滚,用git做版本控制:
> git branch debug01 // 创建debug分支,名称就叫debug01
> git checkout debug01 // 切换到debug01进行调试
点三角形启动,成功运行。
• 用postman,提交数据
在服务正常运行后,用postman提交数据成功,请求就被vscode截获,任务栏高亮。
• 进入调试页面
左侧变量可以查看,目前内存中创建的变量。
调试的按钮和其他开发工具的一样,下一步、进入下一层函数、返回上一层,点三角形跳到下一个断点(我设置了2个断点,可以跳进去,如果只有一个断点,则直接运行完)。
• 调试完成
> git checkout master // 切回master
> git branch -d debug01 // 删除debug01分支
大功告成。
但是,在PRD调试一定要对程序非常熟悉,确保没有其他额外的操作,例如发短信、发送微信消息、写其他数据库等。否则,会造成用户影响,而且造成大量的数据需要手工回滚。