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

报错ReferenceError: readline is not defined,求讲解readline工作原理

问题分析与解决方案

为什么会出现 ReferenceError: readline is not defined?

readline 不是JavaScript的全局内置函数,它要么是Node.js环境中的核心模块,要么是部分在线编程平台(比如HackerRank、Codewars)自定义的全局函数。你直接在浏览器控制台或普通JS环境里跑这段代码,自然找不到这个函数。

readline的工作原理

readline是用来从输入流(比如终端命令行、平台测试用例输入)逐行读取文本内容的工具:

  • 在Node.js里,它是一个独立模块,需要手动导入后才能创建交互接口,实现终端与用户的输入交互。
  • 在在线编程平台中,平台会预先封装好全局的readline()函数,让你直接调用就能读取测试用例的输入内容,简化代码编写。

针对你的代码的修复方案

根据不同运行环境,有以下几种修改方式:

1. 在Node.js环境中运行

方式一:用Node.js原生readline模块(异步)

const readline = require('readline');
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

rl.question('请输入数字n:', (input) => {
  let n = parseInt(input);
  sumAndAverage(n);
  rl.close();
});

function sumAndAverage(n) {
    var sum = 0;
    for (let i = 1; i <= n; i++) {
        sum += i;
    }
    console.log(sum);
    console.log(Math.floor(sum / n));
}

方式二:用readline-sync模块(同步,更贴合你的原代码逻辑)

先安装依赖:

npm install readline-sync

再修改代码:

const readlineSync = require('readline-sync');
let n = parseInt(readlineSync.question(''));
sumAndAverage(n);

function sumAndAverage(n) {
    var sum = 0;
    for (let i = 1; i <= n; i++) {
        sum += i;
    }
    console.log(sum);
    console.log(Math.floor(sum / n));
}

2. 在浏览器环境中运行

用浏览器自带的prompt()函数替代readline(),它会弹出输入框获取用户输入:

let n = parseInt(prompt('请输入数字n:'));
sumAndAverage(n);

function sumAndAverage(n) {
    var sum = 0;
    for (let i = 1; i <= n; i++) {
        sum += i;
    }
    console.log(sum);
    console.log(Math.floor(sum / n));
}

3. 在在线编程平台中运行

如果是在HackerRank这类平台,它们的环境已经内置了全局readline()函数,你不需要修改代码,直接提交即可(确保输入格式符合平台要求)。

内容的提问来源于stack exchange,提问作者user19906393

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 09:30:51