I am trying to run the yargs.command
command. I tried running this code snippet :
import yargs from "yargs";
yargs.command({
command: "list",
describe: "List all commands",
handler: function () {
console.log("Listing all commands.");
},
});
yargs.command({
command: "read",
describe: "Reading all commands",
handler: function () {
console.log("Reading all commands");
},
});
And I got this error in the output:
TypeError: yargs.command is not a function
at file:///media/Main-Volume/courses/Udemy%20courses/Node%20JS%20bootcamp/notes-app/app.js:23:7
at ModuleJob.run (internal/modules/esm/module_job.js:145:37)
at async Loader.import (internal/modules/esm/loader.js:182:24)
at async Object.loadESM (internal/process/esm_loader.js:68:5)
After searching on the internet, I came across this solution and added this statement in my code at the end: yargs.parse()
. But unfortunately, I am still getting the same output.
My OS: MX-Linux 21.
Node: 12.22.5.
yargs: 17.4.1.
vs code: 1.66.2.
Does anyone have any clue what went wrong? Any help would be appreciated.
yargs
is a function which returns the object with the .command
property you want. From the README:
yargs(hideBin(process.argv)) .command('curl <url>', 'fetch the contents of the URL', () => {}, (argv) => { console.info(argv) }) .demandCommand(1) .parse()
Your code should look something like this:
import yargs from "yargs";
import {hideBin} from "yargs/helpers";
yargs(hideBin(process.argv))
.command('list', 'List all commands', /*handler*/)
.command(/*...*/)
.parse();