Node.js中process模块常用的属性和方法


Posted in Javascript onDecember 13, 2016

前言

虽然node对操作系统做了很多抽象的工作,但是你还是可以直接和他交互,比如和系统中已经存在的进程进行交互,创建工作子进程。node是一个用于事件循环的线程,但是你可以在这个事件循环之外创建其他的进程(线程)参与工作。

如果不是和命令行工具打交道,可能我们很少有机会去用到process模块中的一些方法或者属性。不过如果你要做类似于webpack或者gulp等较为复杂的构建工具,由于bash界面就是和用户直接交流的工具,因此友好的输入输出,完整的提示都非常有必要了。

属性

一张表格大概可以看到process有哪些属性

属性名称 用途
platform 判断当前系统平台
argv 当前进程的命令行参数数组
execPath 当前进程的可执行文件的绝对路径
stdout 指向标准输出
stdin 指向标准输入
stderr 指向标准错误
stderr 指向标准错误

我们可以直接在代码中这样使用

console.log(porcess.platform) 
// darwin

使用argv 会返回命令行的数组,我们可以通过数组来获取用户具体的命令

console.log(process.argv); 
// [ '/usr/local/bin/node', '/Users/ali-130257n/www/weex-jackzoo/projects/demo.js', '-p', '-v' ]

一般情况下,我们更想获取最后的一些参数,前面两个不需要,我们可以

let args = process.argv.slice(2); 
console.log(args)

// [ '-p', '-v' ]

方法

process 提供的方法有很多。大致我们可以用到的有下面一些。

     cwd:返回运行当前脚本的工作目录的路径

     abort:立即结束进程

     nextTick: 指定下次事件循环首先运行的任务

process 支持的一些事件,通过一些事件,我们可做一些友好的提示或者处理。

     uncaughtException:当前进程抛出一个没有被捕捉的意外时,会触发uncaughtException事件

     message: 接受来自父进程的消息

     rejectionHandled:用于捕获与它关联的promise错误处理并且产生的reject

     unhandledRejection: 同理这个便是用于捕获没有与之关联promise错误处理的reject

const unhandledRejections = new Map(); 
process.on('unhandledRejection', (reason, p) => { 
 unhandledRejections.set(p, reason);
});
process.on('rejectionHandled', (p) => { 
 unhandledRejections.delete(p);
});

warning: 当前进程产生一个警告的时候出发

process.on('warning', (warning) => { 
 console.warn(warning.name); // Print the warning name
 console.warn(warning.message); // Print the warning message
 console.warn(warning.stack); // Print the stack trace
});

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
JSON 教程 json入门学习笔记
Sep 22 Javascript
jQuery源码分析-04 选择器-Sizzle-工作原理分析
Nov 14 Javascript
JS TextArea字符串长度限制代码集合
Oct 31 Javascript
Lab.js初次使用笔记
Feb 28 Javascript
JavaScript实现获得所有兄弟节点的方法
Jul 23 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
Bootstrap Table使用整理(二)
Jun 09 Javascript
一篇文章让你彻底弄懂JS的事件冒泡和事件捕获
Aug 14 Javascript
在 vue-cli v3.0 中使用 SCSS/SASS的方法
Jun 14 Javascript
AngularJs返回前一页面时刷新一次前面页面的方法
Oct 09 Javascript
为什么要使用Vuex的介绍
Jan 19 Javascript
详解webpack-dev-middleware 源码解读
Mar 23 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
Dec 13 #Javascript
node.js 和HTML5开发本地桌面应用程序
Dec 13 #Javascript
AngularJS中$apply方法和$watch方法用法总结
Dec 13 #Javascript
vue.js学习之递归组件
Dec 13 #Javascript
AngularJS过滤器filter用法总结
Dec 13 #Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 #Javascript
AngularJS服务service用法总结
Dec 13 #Javascript
You might like
php explode函数实例代码
2012/02/27 PHP
PHP运行出现Notice : Use of undefined constant 的完美解决方案分享
2012/03/05 PHP
基于Zookeeper的使用详解
2013/05/02 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
php写入文件不覆盖的实例讲解
2019/09/17 PHP
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
node.js中的buffer.Buffer.isBuffer方法使用说明
2014/12/14 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
微信小程序之发送短信倒计时功能
2017/08/30 Javascript
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
Vue使用NProgress进度条的方法
2019/09/21 Javascript
[51:52]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
Python使用Srapy框架爬虫模拟登陆并抓取知乎内容
2016/07/02 Python
flask使用session保存登录状态及拦截未登录请求代码
2018/01/19 Python
Python输入二维数组方法
2018/04/13 Python
Python实现井字棋小游戏
2020/03/09 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
520使用Python实现“我爱你”表白
2020/05/20 Python
python 发送邮件的示例代码(Python2/3都可以直接使用)
2020/12/03 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
2021/01/29 Python
雅诗兰黛香港官网:Estee Lauder香港
2017/09/26 全球购物
思想政治教育专业个人求职信范文
2013/12/20 职场文书
益达广告词
2014/03/14 职场文书
中考标语大全
2014/06/05 职场文书
教师节倡议书2015
2015/04/27 职场文书
《我是什么》教学反思
2016/02/16 职场文书
MySQL 慢查询日志深入理解
2021/04/22 MySQL
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript