Node.js process 进程对象
process 是 Node.js 的全局对象,提供当前 Node.js 进程的信息和控制能力。
进程信息
JavaScript
// 进程 ID
console.log(process.pid); // 进程 ID
console.log(process.ppid); // 父进程 ID
console.log(process.title); // 进程标题
console.log(process.version); // Node.js 版本
console.log(process.arch); // CPU 架构: x64, arm
console.log(process.platform);// 操作系统: win32, linux, darwin
环境变量
JavaScript
// 获取所有环境变量
console.log(process.env);
// 获取特定环境变量
console.log(process.env.NODE_ENV);
console.log(process.env.PATH);
console.log(process.env.HOME);
// 设置环境变量
process.env.MY_VAR = 'value';
// 判断运行环境
if (process.env.NODE_ENV === 'production') {
console.log('生产环境');
}
命令行参数
JavaScript
// process.argv 包含命令行参数
console.log(process.argv);
// [node路径, 脚本路径, 参数1, 参数2, ...]
// 解析参数
const args = process.argv.slice(2);
console.log(args);
// 使用 minimist 解析命名参数
// node app.js --name=Tom --age=25
工作目录
JavaScript
// 当前工作目录
console.log(process.cwd()); // /home/user/project
// 切换工作目录
process.chdir('/tmp');
console.log(process.cwd()); // /tmp
标准输入输出
JavaScript
// 标准输出
process.stdout.write('Hello\n');
// 标准错误
process.stderr.write('Error\n');
// 标准输入
process.stdin.on('data', (data) => {
console.log('输入:', data.toString().trim());
});
进程退出
JavaScript
// 正常退出
process.exit(0);
// 异常退出
process.exit(1);
// 退出前执行
process.on('exit', (code) => {
console.log(`进程退出,退出码: ${code}`);
});
事件监听
JavaScript
// 未捕获异常
process.on('uncaughtException', (err) => {
console.error('未捕获异常:', err);
process.exit(1);
});
// 未处理的 Promise 拒绝
process.on('unhandledRejection', (reason) => {
console.error('未处理的 Promise 拒绝:', reason);
});
// 信号处理
process.on('SIGINT', () => {
console.log('收到 SIGINT 信号 (Ctrl+C)');
process.exit(0);
});
process.nextTick
JavaScript
// 在当前操作完成后立即执行
process.nextTick(() => {
console.log('nextTick');
});
console.log('同步代码');
// 输出顺序: 同步代码 -> nextTick
process.nextTick 优先级高于 Promise.then,在当前事件循环阶段结束后立即执行。
要点总结
- process.env 访问环境变量,process.argv 获取命令行参数
- process.cwd() 获取当前工作目录
- process.exit() 终止进程,process.on() 监听进程事件
- process.nextTick() 优先级最高的微任务
- 使用 process.on('uncaughtException') 捕获全局异常
📝 发现内容有误?点击此处直接编辑