我正在尝试运行 yargs 命令,但它不起作用

Sug*_*san 8 node.js yargs

我在跑步:

node app.js add
Run Code Online (Sandbox Code Playgroud)

我的代码是:

const yargs = require('yargs');
yargs.command({
    command:'add',
    describe:'Adding command',
    handler:function(){
        console.log('Adding notes');
    },
})
Run Code Online (Sandbox Code Playgroud)

但是控制台上没有打印任何内容。

Iho*_*yuk 13

正如@jonrsharpe 在上面的评论中提到的那样。

您需要调用parse函数或访问argv属性

尝试:

const yargs = require('yargs');

yargs
    .command({
        command:'add',
        describe:'Adding command',
        handler: argv => {
            console.log('Adding notes');
        }
    })
    .parse();
Run Code Online (Sandbox Code Playgroud)

或者

const yargs = require('yargs');

const argv = yargs
    .command({
        command: 'add',
        describe: 'Adding command',
        handler: argv => {
            console.log('Adding notes');
        }
    })
    .argv;
Run Code Online (Sandbox Code Playgroud)

node index.js add

  • 你能向我解释一下为什么我们需要调用“argv或parse”来打印处理程序的执行吗?我的意思是执行背后发生了什么? (3认同)

小智 7

你必须提供yargs.parse(); 或 yargs.argv; 定义所有命令后。

const yargs = require('yargs');
yargs.command({
    command:'add',
    describe:'Adding command',
    handler:function(){
        console.log('Adding notes');
    },
});

yargs.parse();
//or
yargs.argv;
Run Code Online (Sandbox Code Playgroud)

或者

You can .argv or .parse() specify individually

    yargs.command({
        command:'add',
        describe:'Adding command',
        handler:function(){
            console.log('Adding notes');
        },
    }).parse() or .argv;
Run Code Online (Sandbox Code Playgroud)