SBoudrias / Inquirer.js

A collection of common interactive command line user interfaces.
MIT License
20.09k stars 1.3k forks source link

Error in transformer when using default exits silently (version 8) #1247

Open robations opened 1 year ago

robations commented 1 year ago

An error thrown from a transformer (after a default value is applied) gets swallowed and the CLI app quits, which makes debugging difficult.

Some sample code:

const Inquirer = require("inquirer");

(async () => {
    try {
        await Inquirer.prompt([
            {
                type: "input",
                message: "Foo quotient",
                name: "foo",
                transformer: (x) => {
                    if (x === 1) {
                        throw new Error("failing because of the reason");
                    }
                    return x;
                },
                default: 1,
            },
        ]);

        console.log("Done");
    } catch (e) {
        console.error("An _expected_ error", e);
    }
})();

In this example, when no input is offered by the user, I would expect:

But instead the program silently quits (no error, no "Done" logged).

(I'm not sure if version 8 is actively maintained but unable to switch to ES modules at present.)

mastrzyz commented 1 year ago

@SBoudrias something like this? https://github.com/SBoudrias/Inquirer.js/pull/1265