新手求助:如何在Node.js控制台实现类似C++ cin的用户输入功能?
Node.js 控制台获取用户输入的几种方法
方法一:使用内置 readline 模块(无需额外安装)
Node.js 自带的 readline 模块可直接处理控制台输入输出,以下是两种常用实现方式:
异步方式(符合Node.js原生特性)
const readline = require('readline'); // 创建readline接口实例 const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // 提问并获取用户输入 rl.question('请输入内容:', (input) => { console.log(`你输入的内容是:${input}`); // 关闭接口,终止程序 rl.close(); }); // 监听接口关闭事件,退出进程 rl.on('close', () => { process.exit(0); });
同步方式(模拟C++ cin 的阻塞体验)
如果想要和cin一样的同步阻塞效果,可以用util.promisify包装异步方法:
const readline = require('readline'); const { promisify } = require('util'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // 将question方法转为Promise格式 const question = promisify(rl.question).bind(rl); // 用async/await实现同步调用 async function getInput() { const input = await question('请输入内容:'); console.log(`你输入的内容是:${input}`); rl.close(); } getInput();
方法二:使用 prompt-sync 第三方库(同步输入)
如果之前用prompt-sync失败,大概率是安装或调用步骤有误,正确流程如下:
- 在项目目录安装依赖:
npm install prompt-sync
- 编写代码:
const prompt = require('prompt-sync')(); // 同步获取输入,用法和C++的`cin>>takeInput`高度相似 const takeInput = prompt('请输入内容:'); console.log(`你输入的内容是:${takeInput}`);
注意:如果使用Node.js 18+的ES模块(.mjs文件),需将引入语句改为import prompt from 'prompt-sync';。安装时若出现报错,检查网络连接或Node.js版本兼容性(prompt-sync支持绝大多数Node.js版本)。
内容的提问来源于stack exchange,提问作者Red Rose
相关产品推荐
相关产品推荐

