• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

질문입니다. CLI

20.03.17 15:24 작성 조회수 163

0

commander 사용에 애러가 나는데 도움좀 주실수 있나요??

#!/usr/bin/env node
const program = require("commander");

program.version("0.0.1", "-v, --version").usage("[options]");

program
  .command("template <type>")
  .usage("--name [name] --path [path]")
  .description("템플릿을 생성합니다.")
  .alias("tmpl")
  .option("-n, --name [name]", "파일명을 입력하세요.", "index")
  .option("-d, --directory [path]", "생성 경로를 입력하세요", ".")
  .action((type, options) => {
    console.log(type, options);
  });
program.command("*", { noHelp: true }).action(() => {
  console.log("해당 명령어를 찾을 수 없습니다.");
  program.help();
});

program.parse(process.argv);
C:\Users\Dos\Desktop\lecture\zerocho_node\node_cli\node_modules\commander\index.js:910
        this.emit('command:' + this.name(), operands, unknown);
                                    ^

TypeError: this.name is not a function
    at Command._parseCommand (C:\Users\Dos\Desktop\lecture\zerocho_node\node_cli\node_modules\commander\index.js:910:37)
    at Command._dispatchSubcommand (C:\Users\Dos\Desktop\lecture\zerocho_node\node_cli\node_modules\commander\index.js:860:18)
    at Command._parseCommand (C:\Users\Dos\Desktop\lecture\zerocho_node\node_cli\node_modules\commander\index.js:877:12)
    at Command.parse (C:\Users\Dos\Desktop\lecture\zerocho_node\node_cli\node_modules\commander\index.js:712:10)
    at Object.<anonymous> (C:\Users\Dos\Desktop\lecture\zerocho_node\node_cli\command.js:21:9)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)

답변 8

·

답변을 작성해보세요.

0

박명훈님의 프로필

박명훈

2020.04.23

확인했습니다 책 잘 보고 있습니다 감사합니다 :)

0

https://github.com/ZeroCho/nodejs-book/tree/revised/ch14

제 개정판 코드 참고하시면 될 것 같습니다. triggered = true도 제거되었습니다.

0

박명훈님의 프로필

박명훈

2020.04.23

추가적으로 commander현재 버전을 받으면 책에서 inquirer를 사용해서 cli만 쳐서 inquirer를 실행시키는 부분도 되지 않습니다. 커맨드가 없으면 자동으로 help를 실행시키도록 해놓았네요. github에서 활용된 버전으로 사용하면 문제없이 돌아갑니다

npm홈페이지에서 보면 program.help를 실행하면 실행 뒤 자동으로 exit한다고 나오고, program.help뒤에 console.log를 넣어봐도 출력이 안되는 것으로 봐서 바로 종료되는것 같은데 이러면 triggered = true를 빼도 되지 않나요?

program.command("*", { noHelp: true }).action(() => {
  console.log("해당 명령어를 찾을 수 없습니다");
  program.help();
});

0

네네 커맨더의 버전 업그레이드로 인해서 name 옵션을 더 이상 사용하면 안 됩니다.

0

박명훈님의 프로필

박명훈

2020.04.22

option에서 name이라는 인자를 사용한게 충돌한거 같은 느낌입니다. 저도 코드를 뜯어본게 아니라 확신은 못하겠지만..

아래처럼 바꾸고 cli template html -d public/html -fn new으로 실행하니 해결됐습니다

.option("-fn, --filename <name>""파일명을 입력하세요""index")

0

이한솔님의 프로필

이한솔

2020.04.02

같은에러가 지금 저도 발생하고 있네요

0

고명우님의 프로필

고명우

2020.03.23

같은 에러입니다. 


조현영님 github
https://github.com/ZeroCho/nodejs-book/blob/master/ch14/14.2/node-cli/command.js

코드 그대로 사용해도 같은 오류가 나네용

0

명령어를 뭘 치셨나요??