【问题标题】:Electron Readline电子阅读线
【发布时间】:2016-07-01 06:53:39
【问题描述】:

我正在尝试使用电子构建一个应用程序,它旨在稍后获得 GUI,但现在我只是尝试这样做:

function test(){

  console.log("In Test")

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

  rl.on('line', function(line){
    console.log(line);
  })

}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
app.on('ready', test);

在启动 npm start 时,我看到了“In Test”日志,但是当我在 shell 中键入内容时,它并没有返回给我,因为我需要它由 Readline 模块返回。

我错过了什么吗?

【问题讨论】:

标签: node.js windows npm electron


【解决方案1】:

在 Electron 中,控制台变成了 Chromium 控制台,这与您习惯的终端不同。据我所知,Readline 是行不通的。 Chromium 中的闪烁控制台不支持以这种方式读取输入。它的操作更像是一个调试 REPL,您可以在其中键入 JS 代码、检查变量等。它不用于用户输入。我认为您无法从该控制台获取输入到 stdin,这是 readline 模块等待查看数据的地方。


更新

我假设 OP 正在使用开发工具控制台,希望它能够像 shell 一样工作。他使用得当。实际问题是 a bug 在 Windows 上使用 node 的 readline 模块。 Node 开发人员正在积极努力修复它。这是一个回归错误,之前修复过一次,但在最近的 node 版本中再次出现。

【讨论】:

  • 你的评论很清楚,我根本不知道!知道这是一件非常有用的事情。 (这解释了很多..)。我最终发现了一个小技巧:在循环中使用readSync
  • 很高兴我能帮上忙 :)
  • 我可以输入什么命令来查看它是否正在运行 Chromium 控制台?我尝试了console.log("test"),但什么也没发生。
  • 我不太清楚你的意思。你在看什么控制台?您是否正在查看您在 Electron 应用中调用 window.openDevTools(); 时打开的控制台?
  • 哦,我错过了那个花絮。 Windows 上的 readline 模块存在错误。我知道这一点是因为我试图在我的 Windows 机器上使用 eslint --init 并且提示都搞砸了,不接受输入。 github.com/nodejs/node/issues/5384#issuecomment-196507143
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-01-11
  • 1970-01-01
  • 1970-01-01
  • 2022-08-23
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多