首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用Inquirer让我的"if else“语句在这个Node文件中正常工作?

Inquirer.js 是一个用于 Node.js 的命令行界面交互库,它允许你通过提问来获取用户的输入,并根据这些输入执行不同的操作。下面是一个简单的示例,展示了如何使用 Inquirer.js 来控制 if else 语句的执行流程。

首先,你需要安装 Inquirer.js

代码语言:txt
复制
npm install inquirer

然后,你可以创建一个 Node.js 文件,比如 app.js,并在其中编写以下代码:

代码语言:txt
复制
const inquirer = require('inquirer');

// 创建问题列表
const questions = [
  {
    type: 'list',
    name: 'choice',
    message: '请选择一个选项:',
    choices: ['选项一', '选项二', '选项三']
  }
];

// 使用Inquirer提问并处理回答
inquirer.prompt(questions).then((answers) => {
  // 根据用户的回答执行不同的操作
  if (answers.choice === '选项一') {
    console.log('你选择了选项一');
    // 在这里添加选项一的逻辑
  } else if (answers.choice === '选项二') {
    console.log('你选择了选项二');
    // 在这里添加选项二的逻辑
  } else if (answers.choice === '选项三') {
    console.log('你选择了选项三');
    // 在这里添加选项三的逻辑
  } else {
    console.log('未知选项');
    // 在这里处理未知选项的情况
  }
}).catch((error) => {
  console.error('发生错误:', error);
});

在这个例子中,inquirer.prompt 方法用于显示问题并等待用户回答。用户的回答会被封装在一个对象中,对象的属性名对应于问题列表中每个问题的 name 属性。然后,你可以使用 if else 语句来根据用户的回答执行不同的代码块。

如果你遇到了问题,比如 if else 语句没有按预期工作,可能的原因包括:

  1. 用户的回答与 if else 语句中的条件不匹配。
  2. 问题列表中的 name 属性与 if else 语句中使用的变量不一致。
  3. 用户的回答可能包含额外的空格或不可见字符,导致条件判断失败。

为了解决这些问题,你可以:

  • 确保问题列表中的 name 属性与 if else 语句中使用的变量一致。
  • 使用 trim() 方法去除用户回答的前后空格。
  • if else 语句中使用严格相等运算符 === 来避免类型转换问题。

例如,如果你想要确保用户回答的前后没有空格,可以在比较之前使用 trim() 方法:

代码语言:txt
复制
if (answers.choice.trim() === '选项一') {
  // ...
}

这样,即使用户输入了额外的空格,条件判断也能正确执行。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

开发一个简单的脚手架工具

在实际工作中,我们可以定制一个属于自己的脚手架,来提高自己的工作效率。 为什么需要需要脚手架? 减少重复性的工作,不再需要复制其他项目再删除无关代码,或者从零创建一个项目和文件。...根据交互动态生成项目结构和配置文件等。 多人协作更为方便,不需要把文件传来传去。 思路 要开发脚手架,首先要理清思路,脚手架是如何工作的?我们可以借鉴 vue-cli 的基本思路。...Inquirer.js,通用的命令行用户界面集合,用于和用户进行交互。 handlebars.js,模板引擎,将用户提交的信息动态填充到文件中。...内置了对命令行操作的支持,在 package.json 中的 bin 字段可以定义命令名和关联的执行文件。...('download-git-repo'); // 问题交互 const inquirer = require('inquirer'); // node 文件模块 const fs = require(

1.7K20

分享一键下载保存任意掘金作者的所有文章为Markdown文件的插件

获取参数 首先你当然要实现自己这个应用的逻辑,当用户在使用你工具的时候,可以通过下面的方式来获得参数 node index.js 123213213 然后你在代码中通过 process.argv.slice...(2) 就能获取到传参的内容,不过本文里我要分享一个inquirer.js的插件,它可以帮助我们的应用在node命令行中实现用户交互,比如可以等待用户输入,可以引导用户选择一些选项。...就像vuecli一样 我分享一下我代码中的用法,其他用法大家自己去看它的文档吧,非常简单 inquirer.js文档:https://github.com/sboudrias/Inquirer.js.../usr/bin/env node 这一行的意思是这个bin文件使用node来执行 接着使用npm link命令,将本地代码软链到系统命令中来模拟用户全局安装。...但下面这个问题真是让我挠头了很久,后来在https://www.npmjs.com/ 账号里重新绑定一个新的邮箱,并完成邮箱的验证后就解决了。 最终效果

1.4K20
  • node+ts完成课程设计

    2.如何接收命令行参数? 3.存储在什么格式的数据文件里? 4.怎样存储到数据文件里? 5.怎么提高用户体验? 二、发现问题并解决 1.在哪里运行?...毋庸置疑在node环境中运行,刚好前段时间也自学了一点进程,线程,net等模块。 我单纯就为了实践一下,把这次课程设计当作一份试卷检验一下以前学的知识。 2.如何接收命令行参数?...node官网教程里演示了readLine模块,这是一种不错的方法,我用的inquirer。 3.存储在什么格式的数据文件里?...import ChildProcess from 'child_process' import path from 'path' //创建二叉树 const bst = new BST() //必须用绝对路径(在子进程中当前工作文件变了所有相对路径找不到文件...三、总结 就这样我花了两天时间完成了我的课程设计,期间发现问题并解决问题,这是一个痛苦并快乐的事,我也发现了自己的一些问题: 一、typescript写的还不够好,在使用node自带模块时用成了anyscript

    57110

    开发前端 CLI 脚手架思路解析

    为什么要自己搞脚手架 在实际的开发过程中,我们经常用别人开发的脚手架,以节约搭建项目的时间。...万物皆-v 我们先编写基础代码,让 js-plugin-cli -v 这个命令能够在终端打印出来。 打开 bin/index.js 文件,编写以下代码 : #!.../usr/bin/env node (固定第一行)必加,主要是让系统看到这一行的时候,会沿着对应路径查找 node 并执行。...mirror 切换镜像链接 我们通常会把模板放 Github 上,但是在国内从 Github 下载模板不是一般的慢,所以我考虑将模板放 Vercel 上,但是为了避免一些地区的用户因网络问题不能正常下载模板的问题...抽主要的片段解析: inquirer 取值说明 inquirer.prompt 中的字段 name 类似 key,当你需要获取该值时,应以 answers.key对应值 形式获取(answers 命名取决于

    79111

    使用 Node.js 开发 CLI | moq

    功能如下: 实现执行下方语句,将用于笔记本的Hexo文章中公开文章复制到 用于博客的 Hexo 文章中: moq hexop './' '...../usr/bin/env node 表明 当前文件需以 Node.js 脚本执行 完成后,即可全局安装 moq,在项目所在目录执行: npm install -g 此时全局安装成功,下面测试命令: moq...测试成功 交互式命令行 这里依赖两个库进行开发 commander.js :完整的 node.js 命令行解决方案 Inquirer.js :常见的交互式命令行集合 npm install commander...工作效率up! up! up! ,一起来实现一个Node.js-CLI开发工具吧。...) | 菜鸟教程 node.js如何引用其它js文件 - 挑战者V - 博客园 手把手教你用Node.js创建CLI - 知乎 本文作者: yiyun 本文链接: https://moeci.com/posts

    58510

    2024年Node.js精选:50款工具库集锦,项目开发轻松上手(二)

    它为类继承、装饰器、混入等核心特性的无缝运行提供了必要的支持,即使是在面向较旧的JavaScript环境时也能保持这些功能的正常工作。...tslib的优点 对帮助函数和装饰器不可或缺:使得TypeScript的关键特性在编译后的JavaScript中得以正常工作。 跨环境兼容性:支持各种JavaScript版本和构建工具。...https://www.npmjs.com/package/mkdirp 14、glob:Node.js中的模式匹配文件查找神器 在Node.js项目开发中,经常需要根据特定模式查找文件集合,无论是构建应用...inquirer库正是为了在命令行界面中创建对话而生,它让设计交云工作流程、提出引人入胜的问题以及轻松收集用户输入成为可能。...在接下来的文章中,我们将继续深入探索,为你揭晓第30个至第40个Node.js工具集,期待为你的开发工作带来更多的便利和创新。

    52210

    使用 Node.js 开发简单的脚手架工具

    在实际工作中,我们可以定制一个属于自己的脚手架,来提高自己的工作效率。 为什么需要需要脚手架? 减少重复性的工作,不再需要复制其他项目再删除无关代码,或者从零创建一个项目和文件。...根据交互动态生成项目结构和配置文件等。 多人协作更为方便,不需要把文件传来传去。 思路 要开发脚手架,首先要理清思路,脚手架是如何工作的?我们可以借鉴 vue-cli 的基本思路。...Inquirer.js,通用的命令行用户界面集合,用于和用户进行交互。 handlebars.js,模板引擎,将用户提交的信息动态填充到文件中。...,在 package.json 中的 bin 字段可以定义命令名和关联的执行文件。...node.js 的文件模块 fs,将 handlebars 渲染完后的模板重新写入到文件中。

    1.3K20

    手把手教你写一个前端脚手架

    不过再讲这强大的功能之前,原谅我先水一篇脚手架的基础。 脚手架会分两篇来讲,本篇为基础篇,讲一讲最简单的脚手架如何搭建,入个门。...那么,脚手架该如何做搭建呢,请移步到下文~ 实现 前提:所使用到的第三方库 Commander[1] 完整的node命令行解决方。当然也可以使用yargs[2],yargs功能更多一些。.../usr/bin/env node 此时目录结构如下: 在package.json中指定执行命令和执行的文件 image.png 执行 npm link 命令,链接到本地环境中 npm link (只有本地开发需要执行这一步...image.png ps: 如果要使用gitee的话,就不能使用download-git-repo这个库了,这个库只支持下载github,要另外找一个支持下载gitee的库 创建一个lib文件夹,任何工具方法或者抽象类都放到这个文件夹中...ps:node其实已经不推荐使用exists相关的方法了,但为了好理解这里仍然使用这个方法。node更推荐的是access方法,想了解更多可以查阅node官方文档。

    26930

    【万字长文】从零配置一个vue组件库

    检查了node、npm和git的版本,均没有问题,然后我打开git的隐藏文件夹.git/hooks: 发现目前的这些钩子文件后面还是带着sample后缀,如果想要某个钩子生效,这个后缀要去掉才行,但是这种操作显然不应该让我手动来干...: [ 'module-x' ] } 因为默认情况下 babel-loader 会忽略所有 node_modules 中的文件,添加这个配置可以让Babel 显式转译这个依赖。...zh/rate是我添加的一个组件的文档,文档及示例内容都在文件夹下的README.md文件里,vuepress对markdown做了扩展,所以在markdown文件里可以使用像vue单文件一样包含template....set('@zf', pkgPath) } } 这样在vuepress里就可以正常使用我们的组件了,当你开发完成后就可以把这个包package.json的入口字段改成打包后的目录: // package.json...AST,然后在最后一个import语句后面插入新组件的导入语句,以及在最后一条Vue.use语句和console.log语句之间插入新组件的注册语句,最后再转换回源码写回到这个文件里,AST相关的操作可以使用

    1K30

    【干货】打造自己的web前端工作流(一)--- 交互的命令行工具模板篇

    前言 web前端领域技术日新月异,技术栈也不断丰富,在日常工作中涉及到的内容也不断增加,一个前端项目从开发到发布涉及的步骤也很多,很多重复工作内容,因此我们需要开发一些工作来减少这些工作量---工作流...同时我也会简要介绍这些轮子是用来做什么的,以及在实际操作中具体的基本用法。 关于web前端工作流 我计划分为 采用三个篇文章来介绍其他两个主题: 构建篇 发布篇 为何要做一个工作流工具?...,这就造成优化无法快速应用到项目中,需要在每个项目重复这些工作,如何让这些能力通用,这也可以纳入工作流工具中。...,并且每个不同的步骤都可能是在不同系统中完成,对我们开发者也增加了很多不必要的工作。...,在复制文件时,通过传入对象,中的所有属性可以直接在模板代码的全局内访问,具体使用如下: 复制模板,第三个参数是模板执行的上下文对象 this.fs.copyTpl(    this.templatePath

    2.8K40

    前端CLI脚手架思路解析并从0到1搭建

    为什么要自己搞脚手架 在实际的开发过程中,我们经常用别人开发的脚手架,以节约搭建项目的时间。但是,当npm没有自己中意的脚手架时,我们不得不自己动手,此时学会开发前端CLI脚手架的技能就显得非常重要。...万物皆-v 我们先编写基础代码,让 js-plugin-cli -v 这个命令能够在终端打印出来。 打开 bin/index.js 文件,编写以下代码 : #!.../usr/bin/env node (固定第一行)必加,主要是让系统看到这一行的时候,会沿着对应路径查找 node 并执行。...mirror 切换镜像链接 我们通常会把模板放 Github 上,但是在国内从 Github 下载模板不是一般的慢,所以我考虑将模板放 Vercel 上,但是为了避免一些地区的用户因网络问题不能正常下载模板的问题...抽主要的片段解析: inquirer取值说明 inquirer.prompt 中的字段 name 类似 key,当你需要获取该值时,应以 answers.key对应值 形式获取( answers 命名取决于

    1.5K31

    (满满干货)从零实现命令行脚手架工具——自动初始化项目工程以及发布到NPM

    那么,这么方便的命令行工具是怎么实现的呢?下面我们就开始进入实战环节。 实战 我将会使用之前自己开发的一款脚手架工具strview-cli来介绍如何实现它的。...mkdir bin 接着,在文件夹中我们创建一个index.js文件、config文件夹、utils文件夹。...touch index.js mkdir config mkdir utils 最后,在config 文件中创建一个index.js文件,在utils文件夹中创建一个checkDire.js。...接着往下执行,到了inquirer.prompt()这个方法,这个方法的作用主要是启动提示界面(查询会话),第一个参数是包含问题对象的问题(数组)(使用反应式接口,还可以传递一个Rx.Observable...commander.parse(process.argv);这行代码中.parse()的第一个参数是要解析的字符串数组,也可以省略参数而使用process.argv。指明,按 node 约定。

    59720

    《前端那些事》从0到1开发简单脚手架

    上一篇树酱讲《前端工程化那些事》,聊到脚手架,不过时间比较仓促,导致内容较少,而在我实践开发中,随着新项目愈来愈多,脚手架工具就起到提高效能的作用,借此机会跟小伙伴们分享下我是如何从0到1开发一个简单脚手架...) 没有脚手架,我只能通过copy拷贝代码来完成,这样繁琐又机械化的操作浪费大量时间,而且还可能在拷贝过程中,因为某个细节出错,导致项目出错,排查问题又耗时。...需要注意在文件前面定义#!/usr/bin/env node #!.../usr/bin/env node设置后,可以让系统动态的去查找node,已解决不同机器不同用户设置不一致问题 检测目录是否存在 // utils/checkDire.js const fs = require...终端样式库,让你的日志样式更美观,主要用chalk来区别错误与成功的日志 如何使用 使用文档 const chalk = require('chalk'); // 报错日志用红色来显示 chalk.red

    1.6K30

    从0开始搭建优雅的前端脚手架工具

    前言在日常开发中,我们经常会使用到各种脚手架工具(cli): vue-create-app,ng 包括 npm。它们极大简化了开发人员对于项目结构和文件创建的工作,让我们可以把精力专心在业务实现上。...减少重复工作,跟据用户输入还可以进行差异化配置原理cli 不论有多少功能基本原理就是利用 nodejs 来进行脚本和文件的各种操作,比如 init 等初始化的指令就是在指定的模板代码仓库中拉取相应的代码...准备工作编写cli能使用到的工具库有很多,并且各有各的优点,最为常见的配套按 使用顺序 如下:commander.js,解析用户命令(init, create, -v, help 等)inquirer,...inquirer 包的 prompt 方法来与用户进行交互,数组中的内容会按顺序来提示用户输入,对象中的 name 字段会汇总起来构成回调函数中 answers 的 key。...Error: 'git clone' failed with status 128 这个报错,大多是地址配置有误渲染模板在被clone 的仓库中我们可以使用 handlebars 的语法定义需要被替换的值

    63430

    手把手教你写一个脚手架

    我将这个轮子分成三个版本: 1.尽可能用最少的代码实现一个最简版本的脚手架。2.在 1 的基础上添加一些辅助功能,例如选择包管理器、npm 源等等。3.实现插件化,可以自由的进行扩展。...让你不用从零开始配置一个项目,尽可能快的进行业务开发。 建议在阅读本文时,能够结合项目源码一起配合使用,效果更好。这是项目地址 mini-cli[2]。...这样在电脑上的任何地方都能使用 mvc 命令了。实际上,就是用 mvc 命令来代替执行 node ./bin/mvc.js。...在 lib/promptModules 中添加的是这个功能相关的交互提示语。在 lib/generator 中添加的是这个功能相关的依赖和模板代码。...主要是我没有在 vue-cli 中找到显式注册淘宝源的代码,它只是从配置文件读取出是否使用淘宝源,或者将是否使用淘宝源这个选项写入配置文件。

    1.8K20

    定制你的 CLI,一键生成项目

    工作中, 我们难免会遇到需要自己搭建脚手架的场景, 现成的脚手架有很多, 比如 create-react-app, vue-cli, 能覆盖大部分的需要。...今天这篇, 我就告诉你如何定制自己的 cli, 摆脱从0 搭建项目的困扰。...首先放一下我自己做的cli 工具包地址: https://www.npmjs.com/package/create-my-project-cli 如何使用: npm install create-my-project-cli...定制命令 这个脚本就是你执行命令之后执行的逻辑,要执行的命令就定义在 package.json 中的 bin 字段里: "bin": { "create-my-project": "index.js...结语 定制一套自己 CLI, 能在日后需要的时候帮你节省很多时间, 你也可以不断的完善自己的 CLI, 让你的这个工具更强更好用。

    64120

    浅入vue脚手架 手把手教你撸一个简单脚手架

    nodejs是个非常好用的工具,同时对我们前端同学来说学习成本低,非常友善,可以使用js来开发服务端,同时兼顾前端,实现了语言统一化,这里我不展开说了,主要展开说一下脚手架是怎么实现的。...他会在当前目录下生成一个package.json文件。 bin文件的作用: 很多包都有一个或多个可执行的文件,希望放在PATH中,(实际上,就是这个功能让npm可执行的)。.../bin/index.js" }, 实际上就是相当于一个入口文件,这个入口文件就是他的可执行文件,你可以将其他js引入该文件中然后通过入口文件暴露出去,上面代码指定,cli命令对应的可执行文件为...npm会寻找这个文件,在node_modules/.bin/目录下建立符号链接。在上面的例子中,index.js会建立符号链接node_modules/.bin/index。...你就可以愉快的使用脚手架了,之后可以在npm上发布,下载到全局就可以使用了。

    1.4K30

    实现一个自定义的vue脚手架

    开发背景 博客很久没有更新了, 今天更新一个好玩的,等我将vue3的东西彻底搞明白我会更新一个vue3的系列,到时候会更新稍微勤一点,在使用vuecli的时候发现他的脚手架很有意思,用了几年了,但是一直没有好好研究过这个东西是怎么实现的...文章看起来觉得比较费劲的可以直接移步我的github,源码奉上 源码 先看效果: 实现过程中可能存在的问题 如何获取用户的输入 如果根据用户的输入进行相应的操作 如何自定一个packag.json...就是我们需要使用的终端命令,后面的文件就是我们指定的mjs文件,当然这个文件你可以自己封装,只要是一个入口文件就可以,vue-cli源码这里指向的就是一个bin文件 发布该命令 npm link...// 将bin脚本下的命令进行发布到本地,本地就可以使用bin脚本中的命令 效果 wlm function is success 注意事项 需要被执行的文件需要使用#!...是否安装pinia等等操作,还有一些是给用户选择,比如你是安装vue2还是vue3等,这个功能需要我们使用另一个工具进行实现,inquirer工具 inquirer-github inquirer的基本使用

    81320
    领券