Проблемы с выходом из CLI

#javascript #node.js #command-line-interface #child-process #inquirerjs

Вопрос:

Я создал простой интерфейс командной строки, используя inquirer и child_process. И у меня проблема, когда я закрываю процесс с CTLR C, кажется, что он все еще работает, потому что терминал ничего не отвечает. И мне каждый раз приходится закрывать терминал и открывать его снова, мне это неудобно. Что мне нужно сделать, чтобы выйти из всех процессов с помощью простой команды CTRL C? Искал так много решений в Google, но безрезультатно. Надеюсь, кто-нибудь сможет мне с этим помочь

 const inquirer = require('inquirer')
const { execSync } = require('child_process')
const { readdirSync } = require('fs')

const targetFolder = './src/pages'

const directories = readdirSync(targetFolder)

const questions = [
    {
        type: 'list',
        name: 'page',
        message: 'Choose page to compile',
        choices: directories,
    },
]

inquirer.prompt(questions).then(({ page }) => {
    const options = {
        stdio: 'inherit',
    }
    execSync(`npm run start -- --env page=${page}`, options)
})
 

Ответ №1:

Если вы используете async функции или обещания, вы должны завершить программу с process.exit() помощью . Добавьте его после execSync в then вызов.

Комментарии:

1. это не сработало, все еще зависает после CTRL C

2. @ХанзоХаттори, тогда это, вероятно, не закончено.