我想用户commander.js
并inquirer.js
提出问题并收集答案以创建一个User
实例:
// index.js
const mongoose = require('mongoose');
const User = require('./model/user')
const {addUser,listAllUsers,findUserByEmail,updateUser,deleteUser} = require('./model_methods/user_methods')
const { program } = require('commander');
var inquirer = require('inquirer');
// connect to DB
const db = mongoose.connect('mongodb://localhost:27017/myImportantDates', {
useNewUrlParser: true,
useUnifiedTopology: true,
});
const questions = [
{
type: 'input',
name: 'email',
message: 'user email'
},
{
type: 'input',
name: 'name',
message: 'user name'
},
{
type: 'input',
name: 'password',
message: 'user password'
},
];
program
.version('0.0.1')
.description('The important dates app');
program
.command('add')
.alias('a')
.description('Add a user')
.action(
inquirer
.prompt(questions)
.then( answers => {
addUser(answers)
})
.catch(err =>{
console.log(error)
})
)
program.parse(process.argv);
当我使用 运行它时node index.js add
,问题数组会提出一个问题并退出:
@DESKTOP-5920U38:/mnt/c/Users/myApp$ node index.js add
? user email
@DESKTOP-5920U38:/mnt/c/Users/myApp$
但是,当我 deleteprogram.parse(process.argv)
时,一切正常,它可以将新User
实例返回给我。
我检查了文件:https ://github.com/tj/commander.js/ 仍然不知道发生了什么。有人知道更多吗?
我刚才发现的是,如果我program.parse(process.argv)
在实例的第一次设置中这样开头program
:
program
.version('0.0.1')
.description('The important dates app')
.parse(process.argv);
它也有效。但我仍然不知道为什么顺序很重要。