我正在尝试编写一个node cli
应用程序。 它可以工作,但是,它不会返回到命令行(至少在 Windows 中没有,还没有在 bash 中尝试过(。 我必须Ctrl+Break
退出应用程序。
#!/usr/bin/env node --harmony
var chalk = require('chalk');
var co = require('co');
var prompt = require('co-prompt');
var program = require('commander');
program
.version('1.0.0')
.option('-w, --workshop <workshop number>', 'workshop number to build')
.parse(process.argv);
co(function* () {
if (!program.workshop) {
program.workshop = yield prompt('Workshop: ');
}
return yield Promise.resolve(true);
}).then(function() {
console.log(chalk.bold.cyan('You entered: ') + program.workshop);
});
我也尝试过没有线路return yield Promise.resolve(true);
但这没有影响。
有什么建议吗?
谢谢。
我遇到了同样的问题,并在这个共同提示的 Github 问题中找到了另一种解决方案。
var co = require('co');
var prompt = require('co-prompt');
co(function* () {
var value = yield prompt('Value: ')
return value
}).then(function (value) {
// do whatever you need with the value
console.log(value)
}).then(function () {
// when you are done you must pause stdin
process.stdin.pause()
})
// now the process will exit normally
对于那些感兴趣的人...我不确定这是否是正确的方法,但是:
-
我最终删除了
return yield Promise.resolve(true);
-
然后添加为我的
.then
函数的最后一行process.exit(0);
同样,不确定这是否是最好的方法,但它确实有效。