#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. @ХанзоХаттори, тогда это, вероятно, не закончено.