Node.js断点调试方法等

Node.js

单个文件调试

打开文件,设置断点

设置断点,然后使用快捷键F5,启动调试

固定文件调试

//打开调试面板,点击配置,添加配置,luanch.json
"configurations":[
    {
        "type":"node",
        "request":"lanunch",
        "name":"Launch Program",
        "program":"${workspaceRoot}/app.js"
    },
    {
    "type":"node",
    "request":"launch",
    "name":"启动程序",
    "program":"${file}"
    },
    {
    "type":"node",
    "request":"attach",
    "name":"附加到进程里",
    "address":"localhost",
    "port":5858
    }
]

1、无任何选中的情况下,按下F5会默认启动固定文件调试(第一种情况)。
2、第二种launch是在当前编辑器激活窗口里打开某个文件。
3、其他配置情况:
Launch Program:直接执行
Launch via NPM:通过npm来启动
Attach to Port: 附加端口,根据端口来查找进程。

Attach to Process: 附加到进程,跨进程调试。
Nodemon Setup:代码变动自动启重启的Node monitor(轻量级的 Node.js 项目内核性能监控 + 分析工具)。

Mocha Tests:简单而强大的测试框架
Yeoman generator: 使用最多的脚手架生成器
Gulp task:最流行的流式构建系统

跨进程调试
request的两种选项,对应两种调试方式,launch是指本地调试,attach是远程调试,在编辑器外通过node --debug命令启动。
 

node --inspect hello_node.js
{
    "type":"node",
    "request":"attach",
    "name":"attach to remote",
    "address":"IP地址或域名",
    "port":5858//远程端口,
    "localRoot":"${workspaceRoot}",//本地代码根目录
    "remoteRoot":"absolute root"//远程代码的相对目录
    }

Node.js让开发流程从过度的依赖Nginx到用Node替代Nginx的HTTP功能,让前端有了更多的灵活性,使用页面即服务的概念,使用场景决定选型,适合使用Node的场景:大前端、API接口、RPC服务、OLAP、数据挖掘、AI。

静态API
在开发流程中增加一层静态API,节省开发的时间和成本,预处理、跨平台、构建工具部分都支持,弥补了以JavaScript为核心的全站体系中的服务器部分。

API代理,增加Node Proxy中转模型层。

Node擅长I/o操作,http模块和stream模块组合,非常适合作为代理软件,两个重要的功能:请求转发和跨域JSONP的支持。

1、请求转发
 

const http = require('http');
const fs = require('fs');

const app = http.createServer((req,res)=>{
    if('/remote' === req.url){
        res.writeHead(200,{'Content-Type':'text/plain'});
        return res.end('Hello Remote Page\n');
    } else {
        Proxy(req,res);
    }
});

function Proxy(req,res){
    let options = {
        host : req.host,
        port : 3000,
        headers : req.headers,
        path : '/remote',
        agent : false,
        method : 'GET'
    };
    let httpProxy = http.request(options,(Response) => {//1、新的res
        Response.pipe(res);//3、将res放到respose流里,完成代理功能,请求转发其实就是代理
    });

    req.pipe(httpProxy);//2、通过pipe方法,使req有了新的代理请求httpProxy
}

app.listen(3000,function(){
    const PORT = app.address().port
    console.log(`Server running at http://127.0.0.1:${PORT}`);
})

2、node-proxy返回JSONP API。

Node的更多应用场景
作为前端的基础设施。
命令辅助工具
移动端和pc端
前端组件化,完成组件的打包构建,增加HTTP代理等
架构设计,实现前后端分离
性能优化,反爬虫和爬虫
全栈(掌握后端不会的UI,前端不会的DB)
创建项目的基本流程
 

npm init -y
npm install --save koa@next
touch app.js


因为启动报错,单线程的解决,需要用uncaghtException处理,就不会造成接口奔溃了,就可以解决上边的问题。

 

异常捕获


同步代码才能捕获异常,异步代码不能直接使用try/catch。
代码中都是try/catch也有弊端,比如Go预演代码就有太多的异常捕获。
使用try/catch的成本比较高,一般不建议使用。

 

forever重启进程

npm installl forever -g
forever start app.js //执行JS

小集群:PM2比forve更强大

npm installl pm2 -g
pm2 start app.js -i 0 name "modern-nodejs"

异步回调

  1. Thunk、Generator 1星
  2. co 2星
  3. callback 3星
  4. promise 4星
  5. async 5星

posted on 2022-11-07 15:56  漫思  阅读(181)  评论(0编辑  收藏  举报

导航