2016-03-15 4 views
1

Я пытаюсь создать приложение, используя электрон, он разработан, чтобы получить графический интерфейс позже, но сейчас я просто пытаюсь сделать это:Electron Readline

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 ", но когда я ввожу что-то в свою оболочку, он не возвращается мне, так как мне нужен модуль Readline.

Я что-то упустил?

ответ

4

В Electron консоль становится консолью Chromium, которая не похожа на терминал, к которому вы привыкли. Насколько я знаю, Readline не будет работать. Микшерная консоль в Chromium не поддерживает чтение ввода таким образом. Он работает скорее как отладка REPL, где вы можете вводить код JS, проверять переменные и т. Д. Это не для ввода пользователем. Я не думаю, что вы сможете получить входные данные, поставляемые с этой консоли, в stdin, где модуль чтения читает данные.


Update

Я предположил OP использовал средство разработки консоль, ожидающую его работать, как снаряд. Он правильно использовал его. Фактическая проблема - a bug с модулем readline узла в Windows. Узел узлов активно работает, чтобы исправить это. Это ошибка регрессии, которая была исправлена ​​один раз раньше, но появилась снова в последних версиях узла.

+1

Ваш комментарий очень ясен, и я об этом вообще не знал! Это очень полезная вещь, которую нужно знать. (И это многое объясняет ...). В конце концов я нашел небольшой трюк: используя 'readSync' в цикле. – Addict

+1

Рад, что я мог бы помочь :) – Chev

+0

Какую команду я мог бы напечатать, чтобы увидеть, запущена ли консоль Chromium? Я попробовал 'console.log (« test »)', но ничего не произошло. – Addict