Node【Global全局对象】之【Process】

简介: Node【Global全局对象】之【Process】

🌟前言

哈喽小伙伴们,新的专栏 Node 已开启;这个专栏里边会收录一些Node的基础知识和项目实战,今天带领大家初识一下 Node.js中的Global全局对象 之 Process让我们一起来看看吧🤘


🌟Process

process是一个全局变量,即global对象的属性,它用来操作或者是获取或者查看当前进程的相关信息。


我们都知道,进程计算机系统进行资源分配和调度的基本单位,是操作系统结构的基础,是线程的容器。启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码、运行中的数据和一个执行任务的主线程,我们把这样的一个运行环境叫进程。


当我们启动一个js文件,实际就是开启了一个服务进程,每个进程都拥有自己的独立空间地址、数据栈,像另一个进程无法访问当前进程的变量、数据结构,只有数据通信后,进程之间才可以数据共享。


由于JavaScript是一个单线程语言,所以通过node xxx.js启动一个文件后,只有一条主线程。


🌟process属性

1685511564839.png🌟process.env

process.env 是 Node.js 中的一个环境对象。其中保存着系统的环境的变量信息。NODE_ENV 就是其中的一个环境变量。这个变量主要用于标识当前的环境(生产环境,开发环境)。默认是没有这个环境变量的,需要自己手动配置。


使用频率很高,node服务运行时,时常会判断当前服务运行的环境,如下所示

if(process.env.NODE_ENV === 'production'){
    console.log('生产环境');
}else{
    console.log('非生产环境');
}

🌟process方法

1685511635868.png

🌟process事件

方法 描述
uncaughtException 当Nodejs出现异常,可以通过该事件捕获系统异常


🌟uncaughtException

在你接触node之后,你就会发现那些影响了主事件循环的异常会把整个node进程宕掉的。这会是相当严重的问题,所以process提供了另外一个有用的事件uncaughtException来解决这个问题,他会把异常抓取出来供你处理。

process.on('uncaughtException', function (err) {
  console.log('Caught exception: ' + err);
});
setTimeout(function () {
  console.log('This will still run.');
}, 500);
// Intentionally cause an exception, but don't catch it.
nonexistentFunc();
console.log('This will not run.');

在上面的例子中,我们注册了uncaughtException事件来捕捉系统异常。执行到nonexistentFunc()时,因为该函数没有定义所以会抛出异常。因为Javascript是解释性的语言,nonexistentFunc()方法上面的语句不会被影响到,他下面的语句不会被执行。所以他的执行结果如下:

Caught exception: ReferenceError: nonexistentFunc is not defined
This will still run.

示例:捕获服务器异常

var http = require('http');
var server = http.createServer(function(req,res) {
  res.writeHead(200, {});
  res.end('response');
  badLoggingCall('sent response');
  console.log('sent response');
});
process.on('uncaughtException', function(e) {
  console.log(e);
});
server.listen(8080);

在这里例子中我们创建了一个Web服务器,当处理完请求之后,我们会执行badLoggingCall()方法。因为这个方法不存在,所以会有异常抛出。但是我们注册的uncaughtException事件会对异常做出处理,这样服务器不会受到影响得以继续运行。我们会在服务器端记录错误日志。

[ReferenceError: badLoggingCall is not defined]

🌟写在最后

更多Node知识以及API请大家持续关注,尽请期待。各位小伙伴让我们 let’s be prepared at all times!

目录
相关文章
|
6月前
|
JavaScript 容器
Node.js 全局对象及其使用
Node.js 全局对象及其使用
89 4
|
1月前
|
JavaScript 前端开发 Unix
Node.js 全局对象
10月更文挑战第5天
24 2
|
3月前
|
搜索推荐 Java API
Electron V8排查问题之分析 node-memwatch 提供的堆内存差异信息来定位内存泄漏对象如何解决
Electron V8排查问题之分析 node-memwatch 提供的堆内存差异信息来定位内存泄漏对象如何解决
99 0
|
3月前
|
JavaScript 前端开发
nodejs process进程
nodejs process进程
31 0
|
5月前
|
JavaScript 前端开发 Unix
Node.js 全局对象
Node.js 全局对象
28 2
|
5月前
|
运维 JavaScript Devops
阿里云云效操作报错合集之node.js构建时,报错:The build failed because the process exited too early.该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
6月前
|
JavaScript Unix API
Nodejs 第十四章(process)
Nodejs 第十四章(process)
61 0
|
6月前
|
Web App开发 监控 JavaScript
【Node系列】Node全局对象
global:全局对象,在所有模块中都可以访问
51 1
|
11月前
【Node学习】—querystring 实现字符串转对象 对象转字符串
【Node学习】—querystring 实现字符串转对象 对象转字符串
node子进程(Child Process)获取硬盘分区
node子进程(Child Process)获取硬盘分区
61 0