You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

新手求助:如何在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失败,大概率是安装或调用步骤有误,正确流程如下:

  1. 在项目目录安装依赖:
npm install prompt-sync
  1. 编写代码:
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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 05:44:57