eggJS 代码调试,很详细!

5 篇文章 0 订阅
订阅专栏
5 篇文章 0 订阅
订阅专栏
5 篇文章 0 订阅
订阅专栏

1. 使用 日志输出 进行调试

控制台输出

console.log(); // haha

使用 logger 模块

框架内置了 日志 功能,使用 logger.debug() 输出调试信息,推荐在应用代码中使用它。

**// controller
this.logger.debug(‘current user: %j’, this.user);
// service
this.ctx.logger.debug(‘debug info from service’);
// app/init.js
app.logger.debug(‘app init’);


通过 config.logger.level 来配置打印到文件的日志级别,通过 config.logger.consoleLevel 配置打印到终端的日志级别。

日志路径
  • 所有日志文件默认都放在 ${appInfo.root}/logs/${appInfo.name} 路径下,例如 /home/admin/logs/example-app
  • 在本地开发环境 (env: local) 和单元测试环境 (env: unittest),为了避免冲突以及集中管理,日志会打印在项目目录下的 logs 目录,例如 /path/to/example-app/logs/example-app

如果想自定义日志路径:

// config/config.${env}.js
exports.logger = {
  dir: '/path/to/your/custom/log/dir',
};

更详细教程参考官方文档

使用 debug 模块

debug 模块是 Node.js 社区广泛使用的 debug 工具,很多模块都使用它模块打印调试信息,Egg 社区也广泛采用这一机制打印 debug 信息,推荐在框架和插件开发中使用它。
我们可以通过 DEBUG 环境变量选择开启指定的调试代码,方便观测执行过程。
(调试模块和日志模块不要混淆,而且日志模块也有很多功能,这里所说的日志都是调试信息。)
开启所有模块的日志:


$ DEBUG=* npm run dev

开启指定模块的日志:


$ DEBUG=egg* npm run dev

单元测试也可以用 DEBUG=* npm test 来查看测试用例运行的详细日志。


2. 使用 DevTools 进行调试

最新的 DevTools 只支持 Inspector Protocol 协议,故你需要使用 Node.js 8.x+ 的版本方能使用。
执行 npm run debug 启动:


➜ showcase git:(master) ✗ npm run debug
showcase@1.0.0 debug /Users/tz/Workspaces/eggjs/test/showcase
egg-bin debug
Debugger listening on ws://127.0.0.1:9229/f8258ca6-d5ac-467d-bbb1-03f59bcce85b
For help see https://nodejs.org/en/docs/inspector
2017-09-14 16:01:35,990 INFO 39940 [master] egg version 1.8.0
Debugger listening on ws://127.0.0.1:5800/bfe1bf6a-2be5-4568-ac7d-69935e0867fa
For help see https://nodejs.org/en/docs/inspector
2017-09-14 16:01:36,432 INFO 39940 [master] agent_worker#1:39941 started (434ms)
Debugger listening on ws://127.0.0.1:9230/2fcf4208-4571-4968-9da0-0863ab9f98ae
For help see https://nodejs.org/en/docs/inspector
9230 opened
Debug Proxy online, now you could attach to 9999 without worry about reload.
DevTools → chrome-devtools://devtools/bundled/inspector.html?experiments=true&v8only=true&ws=127.0.0.1:9999/ws_proxy

然后选择以下一种方式即可:

  • 直接访问控制台最后输出的 DevTools 地址,该地址是代理后的 worker,无需担心重启问题。
  • 访问 chrome://inspect,配置对应的端口,然后点击 Open dedicated DevTools for Node 即可打开调试控制台。


3. 使用 VSCode 进行调试

方式一:

开启 VSCode 配置 Debug: Toggle Auto Attach,然后在 Terminal 执行 npm run debug 即可。
【我也没有搞通,不明白怎么弄?!求路过的大佬指教。】

方式二:

配置 VSCode 的 .vscode/launch.json,然后 F5 一键启动即可。(注意,需要关闭方式一中的配置)

1. 设置断点

image.png
如上图,点击左侧的行数,16行就可以打上断点了。

2. 配置launch.json文件

2.1 进入调试窗口点击vscode左侧的debug窗口,如果你之前没有配置过launch.json文件,那么效果就会如下图一样。
image.png

2.2 新建launch.json配置文件
点击左上方,【没有配置】,选择 添加配置;
VSCode本身就内置了Node.js的调试工具,如果将来你需要调试别的东西,可以在这里添加对应的调试插件工具。
image.png新版本的VSCode会自动匹配环境,生成launch.json文件,如果你的木有生成,需要手动选择Node.js环境
2.3 添加配置image.pnglaunch.json文件新建好后,我们需要进行一些配置操作,这里我们选择的是,附加到进程。
2.4 修改launch.json文件

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Launch Egg",
            "type": "node",
            "request": "launch",
            "cwd": "${workspaceRoot}",
            "runtimeExecutable": "npm",
            "windows": {
                "runtimeExecutable": "npm.cmd"
            },
            "runtimeArgs": [
                "run",
                "debug"
            ],
            "console": "integratedTerminal",
            "protocol": "auto",
            "restart": true,
            "port": 9999,
            "autoAttachChildProcesses": true
        }
    ]
}

官方文档提供的 “port”: 9229 进不去断点,不知道为什么,网上查了下,改成9999正常。

3.启动调试

launch.json文件配置和好后,然后按F5启动
image.png

接着在需要断点的代码位置进行断点,然后访问即可,会进入你打的断点,在上面的操作栏可以进行调试。
image.png
还可以查看打印变量信息
image.png
更多玩法自己探索哈~

官方文档也提供了一个 vscode-eggjs 扩展来自动生成配置。

更多 VSCode Debug 用法可以参见文档: Node.js Debugging in VS Code


参考文献:
https://eggjs.org/zh-cn/core/development.html#%E4%BD%BF%E7%94%A8-egg-bin-%E8%B0%83%E8%AF%95
https://wurh.github.io/2018/11/07/20181107/

如何用js给小游戏添加背景音乐_如何用vscode 调试 egg.js
weixin_28938701的博客
01-26 488
egg.js项目,PRD出现了一个bug,急需处理,而Debug(调试)是解决问题最快途径。 想起之前写过的一篇文章,但发现Debug(调试) 和 unit test(单元测试)不是一回事,Debug才比较适用。 于是,研究了egg.js的调试。 • Vscode 安装扩展 eggjs • 添加 Egg Debug,马上就会弹出一个launch.json,保存即可。...
egg终端打印日志格式化
pilipala6886
10-15 675
查阅了博客和 github 的 issue 都没有发现可配置的地方 有人觉得这里已经绝路了 ???????? https://github.com/eggjs/egg-logger/blob/master/lib/egg/context_logger.js#L45 有人认为只能自己写 custom-logger ???????? https://www.zhangshengrong.com/p/Z9a28zOxXV/ 不肯前功尽弃,于是深挖源码,直到 ???? https://github.
eggjs-node:只是代码
05-14
eggjs-nb 只是代码
egg+vscode调试
Cool的博客
09-21 816
按F1,稍等片刻,会出现下图,在红框中输入Toggle Auto Attach开启调试模式 然后命令行启动 egg-bin debug --inpsect-brk=9229 如果调试模式没有开启成功,按F1,稍等片刻,会出现如下图,在红框中输入Attach to Node Process 然后再稍等片刻,会出现下图,随便选一个就行,如果没有的话先在命令行执行以下代码 完成上述步骤就会在左下角出现下图的标记 启动成功后此处会变成橙色 右上角会有下图标志 转载:https://segmentfault.
eggjs全栈开发规范,前端开发项目实例
最新发布
m0_60666841的博客
03-16 1090
编码规范编码格式与语法项目默认编码格式统一为UTF-8格式,语法采用ES6+语法代码注释注释符号后要有一个空格。
VSCode 调试 Egg 完美版 - 进化史 #25
YunWisdom
04-19 1295
VSCode 调试 Egg 完美版 - 进化史#25 背景 VSCode 早期版本,对 Node Cluster 的调试支持一直不是很友好,譬如: 开发期重启进程后,不支持重新 attach。 Cluster 重启后 debugPort 会自增,VSCode 也不支持 attach 新端口。 Egg 的多进程模型多了 Agent 处理公关事务,...
技术查缺补漏day04(eggjsdebugger)
mashirokayo的博客
09-28 145
node端debugger
eggjs调试
weixin_34356138的博客
04-14 258
debug 模块(主要这个, 其他的已经官方够详细了) 安装和指定debug模块命名空间 在指定地方写debug语句, 支持Formatters const mysql = require('./lib/mysql'); const debugPassportJyb = require('debug')('passportJyb') module.exports = app => { ...
Egg 框架测试及调试
不 ' 二
04-18 2392
之前一直使用console.log 打印信息进行调试, 这是很初级的水平, 今天学者使用 Egg 自带的调试和及测试. 调试 我使用的 IDE 是 Webstorm, 这个可好用了, 墙裂推荐. Egg 的框架已经写好 Debug 脚本了, 只要按照教程, 在 Webstorm 配置调试脚本, 即可启动调试. 见:https://eggjs.org/zh-cn/core/developme...
egg.js_调试方式_DevTools/vscode(by official document)/egg.js ctx.body属性
xuchaoxin1375的博客
12-10 845
文章目录reference link使用 [DevTools]进行调试找到连接直接打开(推荐)打开控制台选项卡vscode debug reference link (eggjs.org) 使用 [DevTools]进行调试 找到连接直接打开(推荐) 打开控制台选项卡 vscode debug for vscode: (eggjs.org) 或者,直接在.vscode中创建一个launch.json,并写入一下内容:(F5)启动调试 { "version": "0.2.0", "co
vscode 中 调试egg项目
weixin_30565327的博客
01-29 802
使用egg脚手架搭建好最基本的项目后,当我们想调试代码时,该怎么做呢?你还是选择不断得console.log?太low了,那么该怎么debug呢? 本文针对 Node.js 7.x 及之后的版本 1.在根目录创建 .vscode目录,下面创建 launch.json // .vscode/launch.json { "version": "0.2.0", "configur...
egg-bin:鸡蛋开发工具
04-27
蛋桶 egg开发人员工具,扩展 。 安装 $ npm i egg-bin --save-dev 用法 将egg-bin添加到package.json脚本中: { " scripts " : { " dev " : " egg-bin dev " , " debug " : " egg-bin debug " , " test-local " : " egg-bin test " , " test " : " npm run lint -- --fix && npm run test-local " , " cov " : " egg-bin cov " , " lint " : " eslint . " , " pkgfiles " : " egg-bin pkgfiles " , " autod " : " egg-
egg-zrole:EggJS Casbin插件
05-08
蛋z安装$ npm i egg-zrole --save用法// {app_root}/config/plugin.jsexports . zrole = { enable : true , package : 'egg-zrole' ,} ;配置// {app_root}/config/config.default.jsexports . zrole = { useAdapter ...
egg-generator:用于eggjs的CRUD生成器
04-28
基于eggjs框架搭建的代码生成器, 目前支持CRUD生成, 生成内容包括 服务端代码: eggjs restful 代码骨架文件 app/controller/api/v1/{name}.js app/model/{name}.js app/service/{name}.js app/router.js // 路由注册...
React+EggJs实现断点续传的示例代码
10-15
主要介绍了React+EggJs实现断点续传的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
eggjs.github.io:eggjs 文档站点
08-04
eggjs.github.io $ npm install $ npm run dev
Egg03 断点调试
多啦的博客
05-16 1724
使用Chrome调试 需要Node 8.x+版本以上。 首先执行npm run debug(与node app.js --inspect原理相同) 然后有两种方法启动控制台(不是访问接口的控制台,而是直接启动一个新的针对Node的控制台) (1)执行npm run debug之后,在控制台最后会输出DevTools对应的地址,该地址是代理后的worker,无需担心重启问题。直接访问该地址即可进行断...
Web应用开发框架-egg进阶与实战(一)——debug调试步骤、日志之日志路径、日志分类、日志级别、如何打印日志、文件日志级别、日志切割、日志影响性能
weixin_44867717的博客
11-04 357
如果我们在处理请求时需要打印日志,这时候使用 Context Logger,用于记录 Web 行为相关的日志。如果我们想做一些应用级别的日志记录,如记录启动阶段的一些数据信息,可以通过 App Logger 来完成。日志对于 Web 开发的重要性毋庸置疑,它对于监控应用的运行状态、问题排查等都有非常重要的意义。在开发框架和插件时有时会需要在 Agent 进程运行代码,这时使用。日志打印到文件中的同时,为了方便开发,也会同时打印到终端中。框架内置了强大的企业级日志支持,由。默认日志切割方式,在每日。
js 加入debug后可以进入controller_第一次使用 egg.js
weixin_39825045的博客
11-22 113
极简 Node.js 入门系列教程:极简 Node.js 入门教程 · 语雀​www.yuque.com本文更佳阅读体验:第一次使用 egg.js · 语雀​www.yuque.com使用 egg.js 简单配置即可实现一个 Web 服务器环境准备egg.js 支持 macOS、Linux、Windows,Node.js 最低 8.x初始化初始化 egg.js 可以使用官方推荐的脚手架&&...
eggJS用户登录验证代码
03-08
以下是一个 EggJS 用户登录验证的代码示例: ```javascript // app/controller/user.js const Controller = require('egg').Controller; class UserController extends Controller { async login() { const { ctx } = this; const { username, password } = ctx.request.body; // 验证用户名和密码是否正确 const user = await ctx.service.user.find(username, password); if (!user) { ctx.status = 401; ctx.body = { message: '用户名或密码错误' }; return; } // 生成 token const token = ctx.service.token.generate(user); // 返回 token ctx.body = { token }; } } module.exports = UserController; ``` 在这个示例中,我们首先从请求体中获取用户名和密码,然后调用 `ctx.service.user.find` 方法验证用户名和密码是否正确。如果验证失败,我们返回一个 401 错误。如果验证成功,我们调用 `ctx.service.token.generate` 方法生成一个 token,并将其返回给客户端。 需要注意的是,这个示例中并没有对密码进行加密,实际应用中应该对密码进行加密存储,以保障用户的安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • win10 家庭中文版没有Hyper-V,这样安装一步搞定 99938
  • react antd Tabs组件属性activeKey使用方法 22716
  • vue+elementUI组件table实现前端分页功能 18969
  • vue+elementUI组件tree实现单选加条件禁用 18416
  • vue中使用Echarts利用watch做动态数据渲染 11239

分类专栏

  • 微信小程序 4篇
  • 前端 24篇
  • reactnative 7篇
  • jquery 1篇
  • 移动端 7篇
  • react 2篇
  • antd 1篇
  • nodeJS 5篇
  • eggJS 5篇
  • 后端 5篇
  • JavaScript 7篇
  • vue 6篇
  • elementUI 3篇
  • 系统 2篇
  • window 2篇
  • 虚拟机 1篇

最新评论

  • win10 家庭中文版没有Hyper-V,这样安装一步搞定

    qq_59887141: 研究半天,最后还是重置了系统

  • win10 家庭中文版没有Hyper-V,这样安装一步搞定

    FlowStar829: 我电脑也开不了机了,请问你后来怎么解决的呢表情包

  • win10 家庭中文版没有Hyper-V,这样安装一步搞定

    weixin_49241991: 妈的,电脑都干费了,都开不了机子,开了几次打不开,电脑自己修复了 什么狗东西表情包

  • win10 家庭中文版没有Hyper-V,这样安装一步搞定

    Links.: 怎么输入不上去啊

  • win10 家庭中文版没有Hyper-V,这样安装一步搞定

    Murronly: 请问后来怎么解决的呢

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • vue+Element-ui 导入excel文件生成json数据
  • tsconfig配置详解
  • 小程序写一个自适应内容的步骤条(极简代码)
2021年7篇
2019年9篇
2018年16篇
2017年3篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司安阳阿里店铺托管价格铜仁百度网站优化公司新乡关键词排名推荐邯郸网站优化排名公司湖州seo网站推广多少钱开封阿里店铺托管报价上饶阿里店铺托管多少钱青岛网站优化按天计费日照SEO按天扣费公司包头网站定制洛阳百度seo价格湘西seo网站优化多少钱本溪百度seo多少钱张家界如何制作网站报价黑河网站优化按天扣费报价淮安关键词排名包年推广公司开封外贸网站设计价格绥化网站开发哪家好濮阳网站seo优化报价仙桃网站搭建报价云浮企业网站制作哪家好广州网站开发哪家好黔南网站开发价格巢湖优化价格兴安盟网站优化按天收费推荐大同seo网站优化价格吉祥关键词按天收费推荐塘坑SEO按效果付费天水网站推广系统多少钱郑州企业网站建设推荐歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化