Node.js精进(8)——错误处理】的更多相关文章

在 Node.js 中,提供了 error 模块,并且内置了标准的 JavaScript 错误,常见的有: EvalError:在调用 eval() 函数时出现问题时抛出该错误. SyntaxError:调用不符合 JavaScript 的语法时抛出该错误. RangeError:超出可接受值的集合或范围,例如数组越界. ReferenceError:访问未定义的变量时抛出该错误. TypeError:参数或变量的类型有问题时抛出该错误. URIError:使用全局的 URI 处理函数发生问题时…
10.1 使用domain模块处理错误 / 272 10.1.1 domain模块概述 / 272 10.1.2 创建并使用Domain对象 / 274 10.1.3 隐式绑定与显式绑定 / 276 10.1.4 绑定回调函数与拦截回调函数 / 279 10.1.5 domain堆栈的弹出与推入 / 280 10.1.6 Domain对象的销毁 / 28610.2 Node.js中的断言处理 / 286 10.2.1 equal方法与notEqual方法 / 287 10.2.2 strictE…
模块化是一种将软件功能抽离成独立.可交互的软件设计技术,能促进大型应用程序和系统的构建. Node.js内置了两种模块系统,分别是默认的CommonJS模块和浏览器所支持的ECMAScript模块. 其中,ECMAScript模块是在8.5.0版本中新增的,后面又经过了几轮的迭代.本文若无特别说明,那么分析的都是CommonJS模块. 顺便说一句,本系列分析的是Node.js的最新版本18.0.0,在Github上下载源码后,可以关注下面3个目录. ├── deps 第三方依赖 ├── lib…
在 JavaScript 中,一般只处理字符串层面的数据,但是在 Node.js 中,需要处理网络.文件等二进制数据. 由此,引入了Buffer和Stream的概念,两者都是字节层面的操作. Buffer 表示一块专门存放二进制数据的缓冲区.Stream 表示流,一种有序.有起点和终点的二进制传输手段. Stream 会从 Buffer 中读取数据,像水在管道中流动那样转移数据. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.Buffer Buffer 是 JavaScript…
Events 是 Node.js 中最重要的核心模块之一,很多模块都是依赖其创建的,例如上一节分析的流,文件.网络等模块. 比较知名的 Express.KOA 等框架在其内部也使用了 Events 模块. Events 模块提供了EventEmitter类,EventEmitter 也叫事件触发器,是一种观察者模式的实现. 观察者模式是软件设计模式的一种,在此模式中,一个目标对象(即被观察者对象)管理所有依赖于它的观察者对象. 当其自身状态发生变化时,将以广播的方式主动发送通知(在通知中可携带一…
在 Node.js 中,提供了console模块,这是一个简单的调试控制台,其功能类似于浏览器提供的 JavaScript 控制台. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.原理 与浏览器一样,Node.js 也提供了一个全局变量 console(实例化 Console 类),可调用 log().error() 等方法. 1)同步还是异步 console 的方法既不像浏览器中那样始终同步,也不像 Node.js 中的流那样始终异步. 是否为同步取决于链接的是什么流以及操作…
本节会重点分析内存和进程奔溃,并且会给出相应的监控方法. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.内存 虽然在 Node.js 中并不需要手动的对内存进行分配和销毁,但是在开发中因为程序编写问题也会发生内存泄漏的情况. 所以还是有必要了解一些 Node.js 开放的内存操作和常见的内存泄漏场景. 1)内存指标 Node.js 项目在启动后(例如 node index.js),会创建一个服务进程.进程是具有独立功能的程序在一个数据集合上运行的过程,它是系统进行资源分配和调度…
虽然 Node.js 是单线程的,但是在融合了libuv后,使其有能力非常简单地就构建出高性能和可扩展的网络应用程序. 下图是 Node.js 的简单架构图,基于 V8 和 libuv,其中 Node Bindings 为 JavaScript 和 C++ 搭建了一座沟通的桥梁,使得 JavaScript 可以访问 V8 和 libuv 向上层提供的 API. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.术语解析 接下来会对几个与 Node.js 相关的术语做单独的解析,其中…
HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种获取网络资源(例如图像.HTML文档)的应用层协议,它是互联网数据通信的基础,由请求和响应构成. 在 Node.js 中,提供了 3 个与之相关的模块,分别是 HTTP.HTTP2 和 HTTPS,后两者分别是对 HTTP/2.0 和 HTTPS 两个协议的实现. HTTP/2.0 是 HTTP/1.1 的扩展版本,主要基于 Google 发布的 SPDY 协议,引入了全新的二进制分帧层,保留了 1.1 版…
文件系统是一种用于向用户提供底层数据访问的机制,同时也是一套实现了数据的存储.分级组织.访问和获取等操作的抽象数据类型. Node.js 中的fs模块就是对文件系统的封装,整合了一套标准 POSIX 文件 I/O 操作的集合,包括文件的读写.删除.遍历.重命名等操作. fs 模块中的所有方法都提供了三种形式:回调.同步和 Promise ,其中 Promise 是在 Node.js 的版本 10 中引入的. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.三种形式 在回调形式的方…
市面上成熟的 Node.js 性能监控系统,监控的指标有很多. 以开源的 Easy-Monitor 为例,在系统监控一栏中,指标包括内存.CPU.GC.进程.磁盘等. 这些系统能全方位的监控着应用的一举一动,并且可以提供安全提醒.在线分析.导出真实状态等服务. 本专题分为上下两个篇章,会简单分析下在 Node.js 环境中的几个资源瓶颈,包括CPU .内存和进程奔溃,并且会给出相应的监控方法. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.CPU 在 Linux 系统中,可以通…
Socket.IO 是一个建立在 WebSocket 协议之上的库,可以在客户端和服务器之间实现低延迟.双向和基于事件的通信. 并且提供额外的保证,例如回退到 HTTP 长轮询.自动重连.数据包缓冲.多路复用等. WebSocket 是一种基于 TCP 协议在服务器和浏览器之间提供全双工和低延迟通道的通信协议. 注意,Socket.IO 不是 WebSocket 的实现.尽管 Socket.IO 确实在可能的情况下使用 WebSocket 进行传输,但它为每个数据包添加了额外的元数据. 这就是为…
uncaughtException 未捕获的异常, 当node.js 遇到这个错误,整个进程直接崩溃. 或许这俩个人上辈子一定是一对冤家. 或许这俩个人经历了前世500次的回眸才换来了今生的相遇,只可惜在错误的时间,错误的地点,做了错误的事! 什么是uncaughtException uncaughtException 是一种未捕获的异常,它是node.js 进程上的一个事件,直接挂在 process 上. 什么时候会遇到uncaughtException 1.当你的程序出错了 2.这个错误还没…
这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正. Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎.前者负责渲染 HTML + CSS,后者则负责运行 JavaScript.Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快. Node.js 是一个运行在服务端的框架,它的底层就使用了 V8 引擎.我们知道 Apache + PHP…
第一章 node.js介绍 非阻塞型I/O机制 当在访问数据库取得搜索结果的时候,在开始访问数据库之后,数据库返回结果之前,存在一段等待时间. 在传统的单线程处理机制中,在执行了访问数据库的代码之后,整个线程都将暂停下来,等待数据库返回查询结果之后才能继续执行后面的代码.这是I/O型阻塞 node.js中在执行了访问数据库的代码之后将立即执行其后面的代码段,把数据库返回的结果的处理代码放在回调函数中.这是非阻塞型I/O机制 第三章 node.js中的全局作用域及全局函数 timer.unref(…
每日一篇优秀博文 2017年10月10日 周二 为什么要用 Node.js 这是一个移动端工程师涉足前端和后端开发的学习笔记,如有错误或理解不到位的地方,万望指正. Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎.前者负责渲染 HTML + CSS,后者则负责运行 JavaScript.Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快. Node.js 是一个运行在服…
转:http://blog.jobbole.com/100058/?utm_source=blog.jobbole.com&utm_medium=relatedPosts Node.js 是什么 传统意义上的 JavaScript 运行在浏览器上,这是因为浏览器内核实际上分为两个部分:渲染引擎和 JavaScript 引擎.前者负责渲染 HTML + CSS,后者则负责运行 JavaScript.Chrome 使用的 JavaScript 引擎是 V8,它的速度非常快. Node.js 是一个运…
复习node.js 需要注意知识点--(重点) 2.1:参数传递获取造型 客户端脚手架(发)    (参数传递)    node.js(收) -发ajax  this.axios.get("http://127.0.0.1:3000/list?id=9&age=19") -收 node.js   req(request 请求对象) var id  = parseInt(req.query.id); var age = parseInt(req.query.age); 错误:no…
欢迎关注Github仓库,这是一个自2018年起持续更新的前端&算法开源博客.目前已有node学习.js面试笔记.css3动画设计.webpack4系列教程.设计模式.剑指offer·js版等多个系列. 仓库地址:https://github.com/dongyuanxin/blog 进程:process模块 process 模块是 nodejs 提供给开发者用来和当前进程交互的工具,它的提供了很多实用的 API.从文档出发,管中窥豹,进一步认识和学习 process 模块: 如何处理命令参数?…
目录 前言 1 不使用开发工具 1.1 自动重启工具 1.2 浏览器自动刷新工具 2 阻塞event loop 3 频繁调用回调函数 4 圣诞树结构的回调(回调的地狱) 5 创建一个大而完整的应用程序 6 缺少日志 7 没有测试 8 不使用静态分析工具 9 没有监视与性能分析 10 使用console.log来debug 前言 随着一些大公司如Walmart,PayPal等开始采用Node.js,在过去的几年里,Node.js有了快速的增长.越来越多的人开始选择Node并发布modules到NP…
在Node.js中,我们可以使用formidable模块来轻松地实现文件上传功能,代码如下: var Q = require('q'); var util = require('util'); var fs = require('fs'); var path = require('path'); var moment = require('moment'); var formidable = require('formidable'); var imageUpload = function ()…
ajax请求node.js接口出现了如下的错误: XMLHttpRequest cannot load http://xxx.xxx.xx.xx:8888/getTem?cityId=110105&date=2015-03-04. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. 百度了一下,原来是…
TypeError: Arguments to path.join must be strings at f (path.js:204:15) at Object.filter (native) at exports.join (path.js:209:40) at exports.send (E:\nodejs\demo\socket.io-express\node_modules\express\node_modules\connect\lib\middleware\static.js:12…
作为全栈JavaScript错误实时监测平台,Fundebug的Node.js实时错误监测服务上线啦,我们能够帮助开发者及时,高效地发现并且解决Node.js错误,从而提高开发效率,并提升用户体验. Fundebug为什么监测Node.js? 程序员通常是比较自信的,他们坚持自己写的代码没有问题.然而,再追问一下自己: 我的代码真的100%没有问题吗? 我做了完整的单元测试吗? 难道我要花更多的时间没完没了的写单元测试? 那么问题在哪? 当Node.js后台程序在服务器上出错了,然而开发者并不知…
Node.js之错误处理与断言处理 1. 使用 domain 模块处理错误 try..catch 多用于捕捉同步方法中的抛出错误,但不能用try..catch捕捉异步方法中抛出de错误 如: 1 var http = require('http') 2 try{ 3 http.createServer(function(req,res){ 4 if(req.url!="/favicon.ico"){ 5 noneexist();//不存在本函数 6 res.writeHead(200,…
如果没有一些工具和插件写JavaScript代码遇到语法错误找起来很费时间,请教了同事怎么用node.js检查 用浏览器测试的时候报语法错误. 1.点击红圈中的蓝色按钮,下次刷新是会在抛出异常的时候自动断点调试. 3.出现错误断点后,在Console中 用 var a = code ,吧code赋值给a(这样打印的比较快),然后 输入 a 把错误代码打印出来 4.把红色引号里面的代码考出复制到新建的js文本中(如a.js),然后下载node.js安装5.在新建js文本路径中打开命令窗口,输出 n…
错误来源:Centos 7 上使用nginx为Node.js配置反向代理时产生(13: Permission denied) while connecting to upstream的错误 nginx配置文件内容如下: upstream node_server { server 127.0.0.1:5000 max_fails=3 fail_timeout=4s; server 127.0.0.1:5001 max_fails=3 fail_timeout=4s; } server { list…
安装node.js和bower之后,运行bower出现/usr/bin/env: 'node': No such file or directory错误 这个错误是由于安装完node.js环境变量并没有设置好,需要手动链接,才可以正常使用. #解决方法 执行一下命令sudo ln -s /usr/bin/nodejs /usr/bin/node…
1 现象 node服务器 遇见此错误,如下:events.js:71throw arguments[1]; // Unhandled 'error' event^Error: connect ECONNREFUSEDat errnoException (net.js:770:11)at Object.afterConnect [as oncomplete] (net.js:761:19) 2 原因及方法 这主要由于上一次node.js server进程仍然还在运行没关闭掉,所以我们需要杀掉此进程…
node.js中,各种模块有一种标准的写法: this._process.exec(command, options, function (err, stdout, stderr) { callback(err, stdout, stderr); }) 这里说的标准,是指回调函数,一般有err作为第一个参数,然后是具体的数据. 写服务器程序的时候,或多或少会用到child_process这个模块,而这个模块的用法正如上边代码所示. 例如调用一个shell命令删除文件,可以这样: child_pr…