2016年,Node 决定将 Chrome 浏览器的"开发者工具"作为官方的调试工具,使得 Node 脚本也可以使用图形界面调试

1.准备

  创建目录

D:\nodejs>mkdir test

D:\nodejs>cd test

  生成package.json文件

D:\nodejs\test>npm init -y
Wrote to D:\nodejs\test\package.json: {
"name": "test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC"
}

  安装 Koa 框架和 koa-route 模块

D:\nodejs\test>npm install --save koa koa-route
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN test@1.0. No description
npm WARN test@1.0. No repository field. + koa-route@3.2.
+ koa@2.7.
added packages from contributors and audited packages in .74s
found vulnerabilities

  新建脚本test.js

const Koa = require('koa');
const router = require('koa-route'); const app = new Koa(); const main = ctx => {
ctx.response.body = 'Hello World';
}; const welcome = (ctx, name) => {
ctx.response.body = 'Hello ' + name;
}; app.use(router.get('/', main));
app.use(router.get('/:name', welcome)); app.listen();
console.log('listening on port 3000');

2.调试服务脚本

  运行时,加--inspect启动调试模式

D:\nodejs\test>node --inspect test.js
Debugger listening on ws://127.0.0.1:9229/2d21dab8-02a4-4fde-99b3-2bdfecc6bac4
For help, see: https://nodejs.org/en/docs/inspector
listening on port

  浏览器打开http://127.0.0.1:3001/

  打开调试工具的方法

   (1)在 http://127.0.0.1:3001 的窗口打开"开发者工具",左上角有Node 标志

   (2)在 Chrome 浏览器的地址栏,键入 chrome://inspect 或 about:inspect

    (3)调试工具窗口

    Console(控制台)、Source(源码)、Memory(内存)、Profile(性能)

    (4)设置断点

    浏览器访问http://localhost:3001/baby,页面会显示正在等待服务器返回

    切换到调试工具,可以看到 Node 主线程处于暂停(paused)阶段

  进入 Console 面板,输入 name

  正处在断点处的上下文(context)

  Sources 面板,右侧可以看到 Watch、Call Stack、Scope、Breakpoints 等折叠项

  Scope 中,可以看到 Local 作用域和 Global 作用域里面的所有变量

  在Local 作用域里面修改变量name,并继续运行

    页面显示

    (5)终止调试

      命令下,ctrl+c

3.调试非服务脚本

Web 服务脚本会一直在后台运行,但是非服务脚本,运行完就结束了,来不及打开调试工具,如:

function say(word) {
console.log(word);
} function execute(someFunction, value) {
someFunction(value);
} execute(say, "Hello");

  进入调试

node --inspect-brk=9229 test.js

  --inspect-brk指定在第一行就设置断点

  chrome://inspect

  点击继续运行,在console面板输出Hello结束

Node 脚本的调试工具的更多相关文章

  1. Nodejs随笔(二):像可执行shell脚本一样,运行node 脚本!

    在每次编写nodejs脚本的时候,只需在程序的开头加上如下代码(写过shell脚本的人应该很熟悉): #!/usr/local/bin/node 同时,修改文件权限为可执行: mesogene@mes ...

  2. 发测试邮件或垃圾邮件node脚本

    npm install nodemailer 执行后,指定目录下会出现node_modules模块,再相同目录下,创建main.js,js代码如下: var nodemailer = require( ...

  3. Node调试工具JSHint

    Node调试工具JSHint的安装及配置教程 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-27我要评论 Node的优势我就不再乱吹捧了,它让javascript统一web的前后台成 ...

  4. 使用node.js编写脚本将JSON数据转换为SQL语句

    安装依赖模块 当node.js脚本在运行的时候,需要很多支持模块,这些模块存储在node_modules文件夹中.该脚本在执行过程中需要使用到fs.string-format两个支持模块,作用分别是: ...

  5. [转]为什么我要用 Node.js? 案例逐一介绍

    原文地址:http://blog.jobbole.com/53736/ 介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样, ...

  6. 部署node程序并维持正常运行时间

    12.2部署的基础知识 假定你创建了一个想要展示的Web程序,或者创建了一个商业应用,在把它放到生产环境中之前需要测试一下.你很可能会从一个简单的部署开始,然后再做些工作让它的正常运行时间和性能达到最 ...

  7. Node调试之道-----JSHint

    Node调试之道-----JSHint Node的优势我就不再乱吹捧了,它让javascript统一web的前后台成为了可能.但是对于新手来说,server端的JS代码可能不像client端的代码那么 ...

  8. 解放双手:如何在本地调试远程服务器上的Node代码

    写在前面 谈到node断点调试,目前主要有三种方式,通过node内置调试工具.通过IDE(如vscode).通过node-inspector,三者本质上差不多.本文着重点在于介绍 如何在本地通过nod ...

  9. 【转】为什么我要用 Node.js? 案例逐一介绍

    原文转自:http://blog.jobbole.com/53736/ 介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样, ...

随机推荐

  1. python预课06 基于百度大脑AI的人工智能,百度颜值检测,语音合成与识别

    百度大脑: 如下图,百度开放了许多人工智能接口可以使用,先注册一个百度大脑账户 点击创建应用,选择需要的功能,如人脸识别,语音识别等 点击查看文档,可以查看功能对应语言的方法,参数.首先在CMD命令下 ...

  2. 前端性能----CDN

    Content Distribute Network(内容分发网络)是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡.内容分发.调度等功能模块,使用户就近获取所需内容 ...

  3. spark jdbc(mysql) 读取并发度优化

    转自:https://blog.csdn.net/lsshlsw/article/details/49789373 很多人在spark中使用默认提供的jdbc方法时,在数据库数据较大时经常发现任务 h ...

  4. day5 SpringSecurity权限控制jsr250注解不起作用 AOP日志排除不需要织入的方法 web.xml配置错误码页面

  5. OpenGL是什么?GPU是什么?

    一.GPU与CPU CPU是处理基本算数运算的单元:它处理的数据是数:整型.浮点型.bool等等: GPU是处理图形运算的单元:它处理的数据是图形的数据矩阵:   GPU的输入是一个和多个图形,输出是 ...

  6. 函数式编程:面向monad和pipeline编程

    将平凡对象转化为monand对象: 将monand对象串联起来进行业务处理.

  7. 内存模型学习-- Container Executor task之间的关系

    (分割线前的都是废话) java8内存模型: http://www.cnblogs.com/paddix/p/5309550.html http://www.cnblogs.com/dingyings ...

  8. BZOJ 4500: 矩阵 带权并查集

    这个思路挺巧妙的 ~ 定义一行/列的权值为操作后所整体增加的值. 那么,我们会有若干个 $a[x]+b[y]=c$ 的限制条件. 但是呢,我们发现符号是不能限制我们的(因为可加可减) 所以可以将限制条 ...

  9. Git 自救指南:这些坑你都跳得出吗?

    阅读本文大概需要 2 分钟. 菜单栏中添加我微信,私聊[加群]拉你入微信学习交流群 Git 虽然因其分布式管理方式,不完全依赖网络,良好的分支策略,容易部署等优点,已经成为最受欢迎的源代码管理方式. ...

  10. Spring Boot进阶系列一

    笔者最近在总结一个 Spring Boot实战系列,以方便将来查找和公司内部培训用途. 1.Springboot从哪里来 SpringBoot是由Pivotal团队在2013年开始研发.2014年4月 ...