Node.js的学习2——内置模块(一)

Node.js的内置模块

module模块

使用module模块可以查看Node.js所有的内置模块、在所有模块中都可以使用的全局变量、程序在运行过程中可能会出现的四类错误。

javascript 复制代码
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 :打印信息
javascript 复制代码
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。

javascript 复制代码
// 引入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语句

javascript 复制代码
try {
  const a = 1
  // c 未定义
  const b = a + c
} catch (err) {
  console.log(err.name)
}
console.log("do something")

异步方法通过回调函数传递异常

javascript 复制代码
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事件里。

javascript 复制代码
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 表示提供的参数不是允许的类型
相关推荐
知识分享小能手8 小时前
深度学习学习教程,从入门到精通,数值计算 — 知识点详解(4)
人工智能·深度学习·学习
zyf1044169 小时前
暑期实践日志 Day49:复盘题库出题成果,夯实章节考点
学习·计算机网络·剪辑·暑期实践·课题任务
FungLeo9 小时前
成为全栈·Node 后端篇·列表接口三件套:分页、筛选、排序
node.js·列表排序·列表分页·成为全栈·列表接口设计·列表筛选
kaixin_啊啊9 小时前
多模态学习
学习
m4Rk_10 小时前
【论文阅读】Agent 记忆机制(62):DCM-Agent——用双簇记忆化解优化问题的多范式冲突
论文阅读·人工智能·学习·开源·github
xian_wwq10 小时前
【学习笔记】深度认知系列-第13讲AI Agent时代到来——从“回答问题”到“执行任务”
人工智能·笔记·学习
程序猿炎义10 小时前
【llm-algo-leetcode学习笔记】量化优化手段
笔记·学习
HugoStudio_SWAN10 小时前
洛谷 P10719 \[GESP202406 五级] 黑白格——暴力美学与图像处理的最小外接矩形
c++·图像处理·人工智能·学习·程序人生·算法·目标跟踪
那年窗外下的雪.11 小时前
AIDC 学习日志|第 20 天|多归属业务验收与哈希不均定位
学习·算法·哈希算法
xian_wwq11 小时前
【学习笔记】深度认知系列- 第15讲 AI算力战争——GPU、光通信与太空数据中心
笔记·学习