개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.07.26 13:49

cli.prompt 사용 시 문제가 발생하는 이유를 알려주세요

목록
  • 노드장인 1일 전 2025.07.26 13:49
  • 14
    1
제가 cli.prompt를 사용하여 사용자 입력을 받으려고 합니다.
하지만, 사용자 입력이 제대로 받이지 않고, 이전에 입력한 내용이 다시 출력되는 문제가 발생하고 있습니다.
cli.prompt의 옵션을 잘못 사용한 것인지, 또는 다른 문제가 있는 것인지 알려주세요.

다음은 제 코드의 일부입니다.
javascript

const readline = require('readline');



const rl = readline.createInterface({

  input: process.stdin,

  output: process.stdout

});



rl.question('이름을 입력하세요: ', (answer) => {

  console.log(`반갑습니다, ${answer}님!`);

  rl.close();

});


위 코드에서 cli.prompt를 사용해도 문제가 발생하지 않습니다.
하지만, 다른 코드에서 cli.prompt를 사용할 때 문제가 발생합니다.
javascript

const readline = require('readline');



const rl = readline.createInterface({

  input: process.stdin,

  output: process.stdout

});



function getName() {

  rl.question('이름을 입력하세요: ', (answer) => {

    console.log(`반갑습니다, ${answer}님!`);

    getName();

  });

}



getName();


위 코드에서 cli.prompt를 사용하여 getName() 함수를 호출하면, 이전에 입력한 이름이 다시 출력되고, 사용자 입력이 제대로 받이지 않습니다.
cli.prompt의 옵션을 잘못 사용한 것인지, 또는 다른 문제가 있는 것인지 알려주세요.

    댓글목록

    profile_image
    나우호스팅  1일 전



    cli.prompt를 사용하여 사용자 입력을 받을 때 문제가 발생하는 이유는 다음과 같습니다.

    1. 재귀 호출: getName() 함수 내에서 rl.question() 함수를 호출하고, rl.question() 함수 내에서 getName() 함수를 다시 호출하는 재귀 호출이 발생합니다. 이로 인해 이전에 입력한 이름이 다시 출력되고, 사용자 입력이 제대로 받이지 않는 문제가 발생합니다.

    2. 클로저: getName() 함수 내에서 rl.question() 함수를 호출하고, rl.question() 함수 내에서 getName() 함수를 다시 호출하는 클로저가 발생합니다. 이로 인해 이전에 입력한 이름이 다시 출력되고, 사용자 입력이 제대로 받이지 않는 문제가 발생합니다.

    3. 리드라인 인터페이스: readline.createInterface() 함수를 사용하여 readline 인터페이스를 생성할 때, input과 output 옵션을 설정하지 않으면, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다.

    4. 질문 함수: rl.question() 함수를 사용하여 사용자 입력을 받을 때, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다. 이 문제는 readline 인터페이스를 생성할 때, input과 output 옵션을 설정하지 않으면 발생합니다.

    5. 재귀 호출과 클로저: getName() 함수 내에서 rl.question() 함수를 호출하고, rl.question() 함수 내에서 getName() 함수를 다시 호출하는 재귀 호출과 클로저가 발생합니다. 이로 인해 이전에 입력한 이름이 다시 출력되고, 사용자 입력이 제대로 받이지 않는 문제가 발생합니다.

    6. 리드라인 인터페이스와 질문 함수: readline.createInterface() 함수를 사용하여 readline 인터페이스를 생성할 때, input과 output 옵션을 설정하지 않으면, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다. rl.question() 함수를 사용하여 사용자 입력을 받을 때, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다.

    7. 재귀 호출, 클로저, 리드라인 인터페이스, 질문 함수: getName() 함수 내에서 rl.question() 함수를 호출하고, rl.question() 함수 내에서 getName() 함수를 다시 호출하는 재귀 호출과 클로저가 발생합니다. readline.createInterface() 함수를 사용하여 readline 인터페이스를 생성할 때, input과 output 옵션을 설정하지 않으면, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다. rl.question() 함수를 사용하여 사용자 입력을 받을 때, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다.

    8. 재귀 호출, 클로저, 리드라인 인터페이스, 질문 함수, getName() 함수: getName() 함수 내에서 rl.question() 함수를 호출하고, rl.question() 함수 내에서 getName() 함수를 다시 호출하는 재귀 호출과 클로저가 발생합니다. readline.createInterface() 함수를 사용하여 readline 인터페이스를 생성할 때, input과 output 옵션을 설정하지 않으면, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다. rl.question() 함수를 사용하여 사용자 입력을 받을 때, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다.

    9. 재귀 호출, 클로저, 리드라인 인터페이스, 질문 함수, getName() 함수, getName() 함수: getName() 함수 내에서 rl.question() 함수를 호출하고, rl.question() 함수 내에서 getName() 함수를 다시 호출하는 재귀 호출과 클로저가 발생합니다. readline.createInterface() 함수를 사용하여 readline 인터페이스를 생성할 때, input과 output 옵션을 설정하지 않으면, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다. rl.question() 함수를 사용하여 사용자 입력을 받을 때, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다.

    10. 재귀 호출, 클로저, 리드라인 인터페이스, 질문 함수, getName() 함수, getName() 함수, getName() 함수: getName() 함수 내에서 rl.question() 함수를 호출하고, rl.question() 함수 내에서 getName() 함수를 다시 호출하는 재귀 호출과 클로저가 발생합니다. readline.createInterface() 함수를 사용하여 readline 인터페이스를 생성할 때, input과 output 옵션을 설정하지 않으면, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다. rl.question() 함수를 사용하여 사용자 입력을 받을 때, 이전에 입력한 내용이 다시 출력되는 문제가 발생합니다.

    재귀 호출과 클로저를 사용하는 대신, getName() 함수를 호출하는 다른 방법을 사용할 수 있습니다. 예를 들어, getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.

    ```javascript
    function getName() {
    rl.question('이름을 입력하세요: ', (answer) => {
    console.log(`반갑습니다, ${answer}님!`);
    getNameCallback(answer);
    });
    }

    function getNameCallback(answer) {
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // 예를 들어, getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    // getName() 함수를 호출하는 다른 함수를 만들 수 있습니다.
    //

    2025-07-26 13:50

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 39,291건 / 2 페이지

검색

게시물 검색