Node.js的学习2——内置模块(一)
Node.js的内置模块
- module模块
- global全局变量
- Console控制台
- Errors错误模块
- 捕获异常
- 异步方法通过回调函数传递异常
- 事件触发器对象异常捕获
module模块
使用module模块可以查看Node.js所有的内置模块、在所有模块中都可以使用的全局变量、程序在运行过程中可能会出现的四类错误。
const builtinModules = require('module')
console.log(builtinModules)
在Terminal运行node module.js,会出现如下图所示的内置模块。
注:以上的内置模块的导入直接通过require(‘模块名’)即可。
global全局变量
在Node.js中可以全局访问的变量包括:JavaScript本身的内置对象和Node.js特定的全局变量。Node.js提供的全局变量在所有模块中可以直接使用。
变量、方法或类 | 功能说明 |
---|---|
Buffer类 | 用于处理二进制数据 |
__dirname | 当前模块的目录名。此变量看起来作用于全局,但实际上不是 |
__filename | 当前模块的文件名。此变量看起来作用于全局,但实际上不是 |
setImmediate方法 | 在I/O事件回调之后调度callback"立即" 执行 |
setInterval方法 | 每延时数毫秒调度重复执行callback |
setTimeout方法 | 在延时数毫秒后调度单次的callback执行 |
console | 用于打印到标准输出和标准错误 |
exports | 对module.exports的引用,此变量看起来作用于全局,但实际上不是 |
module | 对当前模块的引用。此变量看起来作用于全局,但实际上不是 |
global | 全局的命名空间对象 |
performance | perf_hooks.performance对象 |
process | 进程对象 |
require方法 | 用于导入模块、JSON和本地文件 |
TextDecoder | WHATWG编码标准TextDecoder API的实现 |
TextEncoder | WHATWG编码标准TextEncoder API的实现 |
URL | 浏览器兼容的URL类 |
URLSearchParams | 提供对URL查询的读写访问,为网址查询字符串而设计 |
Console控制台
Console模块导出两个特定组件:Console类和全局的console实例。
全局的console无须调用required(‘console’)就可以使用。
Console类包括:
- console.log :打印内容到标准输出
- console.error :打印错误信息和堆栈跟踪信息
- console.warn :打印信息
const name = 'langezuibang'
console.log(name)
console.error(new Error('you code has bug!'))
console.warn(`hi ${name}`)
运行结果:
Console类可用于创建具有可配置输出流的简单记录器,可使用console.Console进行访问。
Console类构造函数可以接收一个对象,其中的部分可选配置项有stdout和stderr。stdout是用于打印日志或信息输出的可写流,stderr用于警告或错误输出。如果为提供stderr,则stdout用于stderr。
// 引入fs模块
const fs = require('fs')
// 在当前目录下生成日志文件
const output = fs.createWriteStream('./stdout.log')
const errorOutput = fs.createWriteStream('./stderr.log')
// 自定义的简单记录器
const logger = new console.Console({ stdout: output, stderr: errorOutput })
const myName = 'langezuibang'
const age = 18
logger.log(`I'm ${myName}`)
logger.log(`age: %d`, age)
运行代码,发现在当前目录下生成了stdout.log和stderr.log文件,stdout.log文件内容如下:
Errors错误模块
在Node.js中运行的应用程序通常会遇到以下4类错误:
1.标准的JavaScript错误,如、、、、、
2.由底层操作系统约束触发的系统错误
3.由应用程序代码触发的用户指定的错误
4.AssertionError是特殊的错误类,当Node.js检测到异常逻辑时会触发,这些通常由assert模块引发。
捕获异常
用try … catch语句
try {const a = 1// c 未定义const b = a + c
} catch (err) {console.log(err.name)
}
console.log("do something")
异步方法通过回调函数传递异常
const fs = require('fs')
// 通过回调函数的对一个参数传递异常
fs.readFile('a file that does not exist', (err, data) => {// 文件不存在捕获到异常if (err) {console.error('error!', err)return}
})
// readFile是异步方法,因此会先继续执行后面的代码
console.log('go on')
运行结果:
事件触发器对象异常捕获
实例中通过net模块尝试创建到本地服务器的连接,由于本地无可用服务器,所以会发生异常,此异常通过流添加到对象的error事件里。
const net = require('net')
const connection = net.connect('localhost')
connection.on('error', (err)=>{// 向流中添加‘error’事件句柄// 如果连接被服务器重置或根本无法连接,或者连接遇到任意类型的错误,则将错误发送到这里console.error(err)
})
错误相关的类
类 | 功能说明 |
---|---|
Error | 通用的JavaScript对象,不表示发生错误的任何具体情况。 |
AssertionError | 表示断言的失败 |
RangeError | 表示提供的参数不在函数可接收值的集合或范围内 |
ReferenceError | 表示正在尝试访问未定义的变量 |
SyntaxError | 表示程序不是有效的JavaScript |
SystemError | Node.js在其运行时环境中发生异常时会生成系统错误。 |
TypeError | 表示提供的参数不是允许的类型 |
相关文章:

Node.js的学习2——内置模块(一)
Node.js的内置模块 module模块global全局变量Console控制台Errors错误模块捕获异常异步方法通过回调函数传递异常事件触发器对象异常捕获 module模块 使用module模块可以查看Node.js所有的内置模块、在所有模块中都可以使用的全局变量、程序在运行过程中可能会出现的四类错误。…...

信息安全工程师(5)域名与域名解析
一、域名 1. 定义与功能 域名(Domain Name)是互联网上用于标识网站或服务器地址的名称,由一串由点分隔的字符组成,如“example.com”。域名的主要功能是提供一种便于记忆和输入的地址形式,以代替难以记忆的IP地址。域名…...

idear导入他人项目如何快速运行
最近idear经常导入别人的项目,结果永远在加载依赖项。网上查了一堆资料,什么jdk问题,环境变量问题,maven仓库路径问题,总之就是没啥用。那有没有什么简单粗暴的办法,能够导入项目后快速运行呢。 解决方法&a…...

直流无刷电机霍尔线序自学习解释
直流无刷电机霍尔线序自学习 步骤详解 1. 初始连接 连接电机的三相线:A、B、C。连接霍尔传感器线:HA、HB、HC。 2. 输入电压组合与霍尔信号记录 电机的电压输入组合和霍尔信号记录是电机控制系统中至关重要的一部分,它们决定了电机的运转…...
C++学习笔记(26)
七 、显示字符串中的字符 从界面上输入一个字符串(C 风格),把字符串中的每个字符显示出来,如果输入的是"abc",要求: 1)正序显示:a b c 2)逆序显示:…...

安卓14剖析SystemUI的ShadeLogger/LogBuffer日志动态控制输出dumpsy机制
背景: 看SystemUI的锁屏相关代码时候发现SystemUI有一个日志打印相关的方法调用,相比于常规的Log.i直接可以logcat查看方式还是比较新颖。 具体日志打印代码如下: 下面就来介绍一下这个ShadeLogger到底是如何打印的。 分析源码࿱…...

华为CNA VRM搭建(使用vmware worfstartion搭建)
创建虚拟机: 自定义→高级 选择硬件兼容性:默认安装版本,如果未来想要将此虚拟机安装到其他电脑,其他电脑版本过低,此时可以向下兼容,这里我们默认版本 稍后安装操作系统: CNA采用Euler OS系统…...

【WRF工具】WRF Domain Wizard第二期:使用教程
【WRF工具】WRF Domain Wizard第二期:使用教程 WRF Domain Wizard使用教程1)Wizard Option:新建区域/打开已有区域2)New Domain:新建区域3)Horizontal Editor:水平编辑器4)Namelist.…...

智能摄像头MP4格式化恢复方法
如果说生孩子扎堆,那很显然最近智能摄像头多碎片的恢复也扎堆了,这次恢复的是一个不知名的小品牌。其采用了mp4视频文件方案,不过这个案例的特殊之处在于其感染了病毒且不只一次,我们来看看这个小品牌的智能恢复头格式化的恢复方法…...

【C++】unordered系列
前言: 在C11及以后的标准中,unordered容器是标准模板库(STL)的一部分,提供了高效的数据结构选项,适用于需要快速查找和插入操作的场景。 unordered通常与关联容器一起使用,特别是unordered_map和…...

Cobbler 搭建方法
统信服务器操作系统行业版V20-1000c【Cobbler 搭建】手册 统信服务器操作系统行业版 V20版本上Cobbler 搭建方法 文章目录 功能概述一、使用范围二、cobbler工作流程1. Server 端2. Client 端三、 环境准备1. 测试环境告知,以提供配置时参考:2. 关闭防火墙、selinux:3. 注意…...

从边缘到云端,合宙DTURTU打造无缝物联网解决方案
随着物联网(IoT)技术的飞速发展,万物互联的时代已经到来, 如何高效、稳定地连接边缘设备与云端平台,实现数据的实时采集、传输与处理,成为了推动物联网应用落地的关键。 DTU(数据传输单元&…...

【Android Studio】API 29(即Android 10)或更高版本,在程序启动时检查相机权限,并在未获取该权限时请求它
文章目录 1. 在AndroidManifest.xml文件中,声明相机权限:2. 在你的Activity中(例如MainActivity)测试 1. 在AndroidManifest.xml文件中,声明相机权限: <uses-feature android:name"android.hardwar…...
【裸机装机系列】3.kali(ubuntu)-更新sources.list并重启
当装机并重启计算机后,暂时还不能使用,需要更新源并下载软件 1、更新软件源 1> 切换root使用命令 sudo su root 进入界面后,是你自己的账户,不是root账户,这里的操作是需要进入root账户进行操作的,否…...

text2sql(NL2Sql)综述《The Dawn of Natural Language to SQL: Are We Fully Ready?》
《The Dawn of Natural Language to SQL: Are We Fully Ready?》(github)出自2024年6月的NL2SQL(Natural language to SQL )综述论文。这篇论文尝试回答如下三个问题: 问题1:NL2SQL的现状是什么?(Q1:Where Are we Now?) 论文图1总结了近20年NL2SQL方法…...

【滑动窗口】一题讲透滑动窗口!
🚀个人主页:一颗小谷粒 🚀所属专栏:力扣刷题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 1.1 题目要求 1.2 算法图解分析 1.3 代码实现 1.4 时间复杂度分析 1.5 算法思想总结 1.1 题目要…...

嵌入式通信原理—SPI总线通信原理与应用
文章目录 SPI 简介基本原理工作模式特点 SPI寻址方式1. 片选(Chip Select, CS)2. 多从设备通信3. 菊花链(Daisy-Chain)模式4. 地址寄存器(应用层) SPI通信过程时钟信号生成(SCLK)数据…...

基于web的 BBS论坛管理系统设计与实现
博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用 感兴趣的可以…...
【Scala入门学习】Scala的方法和函数
1. 方法 在scala中的操作符都被当成方法存在,比如说、-、*、/ 12就是1.(2)的调用, 2.0 是doule类型,强调用Int类型的写法为1.(2:Int) 1.1 方法的声明和使用 定义方法的语法: def 方法名([变量:变量类型ÿ…...

【JVM】概述
前言 Java的技术体系主要由支撑Java程序运行的虚拟机、提供各开发领域接口支持的Java类库、Java编程语言及许许多多的第三方Java框架(如Spring、MyBatis等)构成。在国内,有关Java类库API、Java语言语法及第三方框架的技术资料和书籍非常丰富&…...

Docker 运行 Kafka 带 SASL 认证教程
Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明:server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
Objective-C常用命名规范总结
【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名(Class Name)2.协议名(Protocol Name)3.方法名(Method Name)4.属性名(Property Name)5.局部变量/实例变量(Local / Instance Variables&…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

对WWDC 2025 Keynote 内容的预测
借助我们以往对苹果公司发展路径的深入研究经验,以及大语言模型的分析能力,我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际,我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测,聊作存档。等到明…...

srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
C++中string流知识详解和示例
一、概览与类体系 C 提供三种基于内存字符串的流,定义在 <sstream> 中: std::istringstream:输入流,从已有字符串中读取并解析。std::ostringstream:输出流,向内部缓冲区写入内容,最终取…...

优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...