当前位置: 首页 > news >正文

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全局的命名空间对象
performanceperf_hooks.performance对象
process进程对象
require方法用于导入模块、JSON和本地文件
TextDecoderWHATWG编码标准TextDecoder API的实现
TextEncoderWHATWG编码标准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
SystemErrorNode.js在其运行时环境中发生异常时会生成系统错误。
TypeError表示提供的参数不是允许的类型

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Vue】- Vue应用
  • Java重修笔记 第五十七天 坦克大战(七)多线程基础 - 编程练习
  • Sitecore 定时任务使用介绍
  • udp聊天室
  • 深度学习的关键数据结构——张量解释
  • 【ArcGIS】栅格计算器原理及案例介绍
  • MS SQL Server 实战 排查多列之间的值是否重复
  • HTB-Lame(msf利用)
  • 数学建模笔记—— 多目标规划
  • Xcode报错:No exact matches in reference to static method ‘buildExpression‘
  • 微服务之间远程调用实现思路
  • MySQL练手题--体育馆的人流量(困难)
  • PyCharm安装
  • Jacoco的XML报告详解
  • Uniapp + Vue3 + Vite +Uview + Pinia 实现购物车功能(最新附源码保姆级)
  • Google 是如何开发 Web 框架的
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • CSS3 变换
  • Objective-C 中关联引用的概念
  • PaddlePaddle-GitHub的正确打开姿势
  • php中curl和soap方式请求服务超时问题
  • Python 反序列化安全问题(二)
  • Python3爬取英雄联盟英雄皮肤大图
  • React as a UI Runtime(五、列表)
  • 从重复到重用
  • 分布式事物理论与实践
  • 回顾2016
  • 前端临床手札——文件上传
  • 驱动程序原理
  • 使用 Docker 部署 Spring Boot项目
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一份游戏开发学习路线
  • 一些关于Rust在2019年的思考
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 如何在招聘中考核.NET架构师
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • # 飞书APP集成平台-数字化落地
  • (10)Linux冯诺依曼结构操作系统的再次理解
  • (arch)linux 转换文件编码格式
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (原創) 未来三学期想要修的课 (日記)
  • (轉貼) 寄發紅帖基本原則(教育部禮儀司頒布) (雜項)
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET/C# 解压 Zip 文件时出现异常:System.IO.InvalidDataException: 找不到中央目录结尾记录。
  • :“Failed to access IIS metabase”解决方法
  • @Autowired自动装配
  • [ai笔记9] openAI Sora技术文档引用文献汇总
  • [AutoSar]BSW_Com02 PDU详解
  • [BUUCTF]-PWN:[极客大挑战 2019]Not Bad解析
  • [BZOJ1178][Apio2009]CONVENTION会议中心
  • [CISCN2019 华东南赛区]Web111
  • [Deep Learning] 神经网络基础
  • [Git][分支管理][上]详细讲解
  • [IE9] IE9 RC版下载链接
  • [iOS]内存分区