首页 > 解决方案 > 退出 CLI 的问题

问题描述

我使用inquirer 和child_process 创建了简单的CLI。我有问题,当我用 CTLR+C 关闭进程时,它似乎仍在运行,因为终端没有响应任何东西。而且我每次都必须关闭终端并再次打开它,这对我来说很不舒服。我需要做什么,用简单的 CTRL+C 命令退出所有进程?在谷歌搜索了很多解决方案,但没有结果。希望有人可以帮助我

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)
})

标签: javascriptnode.jscommand-line-interfacechild-processinquirerjs

解决方案


如果你使用async函数或承诺,你必须用process.exit(). 将其添加execSyncthen通话中。


推荐阅读