option:debug实现debug模式报错

option:debug实现debug模式报错

运行环境描述:

Mac 13.4.1 (c) 

commander v6.2.1

node v15.6.0


问题描述:

tleon --debug一直报错 -> error: unknown option '--debug'


相关截图:

https://img1.sycdn.imooc.com/climg/65a924be092a5b0513941708.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
扬_灵 2024-01-21 15:42:06

同学你好,在测试debug参数的时候需要添加命令,例如: tleon 命令名 --debug

  • 提问者 慕妹3482023 #1

    https://img1.sycdn.imooc.com/climg/65adecba092fca7b14861792.jpg 

    仍然是unknow; 视频中也是 直接输入 --debug命令,依然可以名称option:debug但是我这就是调不出来 , 依稀为完整代码

    #! /usr/bin/env node
    // commander 创建命令
    // npm i commander --registry=https://registry.npmmirror.com
    const commander = require('commander')
    const pkg = require('../package.json')
    
    // 用法2 创建新的实例
    const program = new commander.Command()
    
    // 使用command注册命令
    // 第一种方式通过program.command
    const clone = program.command('clone <source> [description]')
    clone
    .description('clone a repository') // 对命令的描述
    .option('-f, --force', '是否强制克隆') // 对clone添加option
    .action((source, description, cmdObj) => {
    // 输入命令tleon clone aa -f desc -> do clone aa desc true
    console.log('do clone', source, description, cmdObj.force)
    })
    
    // 高级定制2: 实现debug模式,此种当时轻松实现打印级别verbose,可以弃用iuleon/core/cli/lib.js中的checkInputArgs方法
    program.on('option:debug', function () {
    console.log('1111')
    if (program.debug) {
    console.log('2222')
    process.env.LOG_LEVEL = 'verbose'
    }
    console.log(process.env.LOG_LEVEL)
    })
    
    // 高级定制3: 对未知命令的监听
    program.on('command:*', function (obj) {
    console.log(obj) // tleon aa bb -> [aa, bb]
    console.error('未知的命令:' + obj[0])
    // console.log(program.commands) // 获取所有的命令
    const availableCommands = program.commands.map(cmd => cmd.name())
    console.log(availableCommands)
    console.log('可用命令:'+availableCommands.join(',')) // 可用命令:clone,service
    })
    
    program.parse(process.argv)
    {
    "name": "my-test-cli1",
    "version": "1.0.3",
    "description": "",
    "main": "index.js",
    "bin": {
    "tleon": "bin/index.js"
    },
    "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "build": "webpack",
    "dev": "webpack -w"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
    "commander": "^6.2.1",
    "dedent": "^1.5.1",
    "my-test-cli1-lib": "file:../my-test-cli1-lib",
    "path-exists": "^4.0.0",
    "yargs": "^17.7.2"
    },
    "devDependencies": {
    "@babel/core": "^7.12.10",
    "@babel/preset-env": "^7.12.11",
    "babel-loader": "^8.2.2",
    "webpack": "^5.10.3",
    "webpack-cli": "^4.2.0"
    }
    }


    2024-01-22 12:23:45
  • 提问者 慕妹3482023 #2

    老师 我好像知道什么问题了。 开启监听debug模式

    1. program.on('option:debug', function() {})


    应该还是要注册debug命令吧,如以下debug注册命令

    1. .option('-d, --debug', '是否开启调试模式', false)


    2024-01-22 21:17:37
  • 扬_灵 回复 提问者 慕妹3482023 #3

    同学你好,是的,需要配置debug 参数。

    2024-01-26 21:56:06
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师