обрабатывает ввод данных nodeJs из консоли? - PullRequest
0 голосов
/ 10 сентября 2018

Я все еще новичок в nodeJs и пытаюсь создать поток входных данных, но мой код не работает, как только я запускаю приложение в терминале, вызывая файл fileName узла.

Мой формат ввода такой:

- N the number of queries.
- second line represent a string containing two words separated by a space.
- N lines of a string containing two words separated by a space.

по какой-то причине терминал ничего не показывает.

Это мой код:

'use strict';
const fs = require('fs');
var n = 0;
var position = '';
var destination = '';
var array = [];


process.stdin.resume();
process.stdin.setEncoding('utf-8');

let inputString = '';
let currentLine = 0;

process.stdin.on('data', inputStdin => {
    inputString += inputStdin;
});

process.stdin.on('end', _ => {
    inputString = inputString.replace(/\s*$/, '')
        .split('\n')
        .map(str => str.replace(/\s*$/, ''));

    main();
});

function readLine() {
    return inputString[currentLine++];
}
function main() {
    const ws = fs.createWriteStream(process.env.OUTPUT_PATH);


    const s =  parseInt(readLine(), 10);

    const input= readLine().split(' ');

    position = input[0] ;
    destination = input[1];

    console.log('our number is',s, 'and our position and destination:', position, destination);

    ws.end();
}

1 Ответ

0 голосов
/ 10 сентября 2018

Вы можете упростить все это, разрешив readline буферизовать ввод:

'use strict';

const readline = require('readline');

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

rl.on('line', line => {
    rl.write(
        line.replace(/\s*$/, '')
    );
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...