最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

导入 readline 后的 Node.js 错误

网站源码admin27浏览0评论

导入 readline 后的 Node.js 错误

导入 readline 后的 Node.js 错误

我在 Windows 10 Pro 22H2 x64 上使用 Node.js 18.16.0 x64,我刚刚遇到一个奇怪的错误,导致我在导入 readline 后无法使用 Node.js。

我需要一种方法来仅使用内置的而不是任何需要安装的库来获取用户输入。

任何需要 readline 的代码都会触发该错误。

我从这个answer复制粘贴代码:

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

readline.question(`What's your name?`, name => {
  console.log(`Hi ${name}!`);
  readline.close();
});

我明白了:

Welcome to Node.js v18.16.0.
Type ".help" for more information.
> const readline = require('readline').createInterface({
...   input: process.stdin,
...   output: process.stdout,
... });
undefined
>
>
rreeaaddlliinnee..qquueessttiioonn((``WWhhaatt''ss  yyoouurr  nnaammee??``,,  nnaammee  ==>>  {{
...
    ccoonnssoollee..lloogg((``HHii  $${{nnaammee}}!!``));;
...
    rreeaaddlliinnee.lloossee(());;
...
}}));;

然后在我按下 Enter node.exe 后立即自行关闭。

我也试过这个

const readline = require('readline');

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

function readLineAsync(message) {
  return new Promise((resolve, reject) => {
    rl.question(message, (answer) => {
      resolve(answer);
    });
  });
} 

// Leverages Node.js' awesome async/await functionality
async function demoSynchronousPrompt() {
  var promptInput = await readLineAsync("Give me some input >");
  console.log("Won't be executed until promptInput is received", promptInput);
  rl.close();
}
Welcome to Node.js v18.16.0.
Type ".help" for more information.
> const readline = require('readline');
solve(answer);
undefined
>
> const rl = readline.createInterface({
...   input: process.stdin,
...   output: process.stdout
... });
undefined
>
>
ffuunnccttiioonn  rreeaaddLLiinneeAAssyynncc((mmeessssaaggee))  {{
...
    rreettuurrnn  nneeww  PPrroommiissee((((rreessoollvvee,,  rreejjeecctt))  ==>>  {{
...
        rrll..qquueessttiioonn((mmeessssaaggee,,  ((aannsswweerr))  ==>>  {{
...
            rree        }}));;
...
    }}));;
...
}}
undefined
>

>
////  LLeevveerraaggeess  NNooddee..jjss''  aawweessoommee  aassyynncc//aawwaaiitt  ffuunnccttiioonnaalliittyy
undefined
>
aassyynncc  ffuunnccttiioonn  ddeemmooSSyynncchhrroonnoouussPPrroommpptt(())  {{
...
    vvaarr  pprroommppttIInnppuutt  ==  aawwaaiitt  rreeaaddLLiinneeAAssyynncc((""GGiivvee  mmee  ssoommee  iinnppuutt  >>""));;
...
    ccoonnssoollee..lloogg((""WWoonn''tt  bbee  eexxeeccuutteedd  uunnttiill  pprroommppttIInnppuutt  iiss  rreecceeiivveedd"",,  pprroommppttIInnppuutt));;
...
    rrll.lloossee(());;
...
}}

同样的事情发生了。

怎么回事?

回答如下:

不是错误。您在 REPL 中运行了它,创建了一个从标准输入到标准输出的流,因此之后您在 REPL 中键入的任何内容都会被复制。从文件运行它。

发布评论

评论列表(0)

  1. 暂无评论