0

我正在尝试编写一个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);,但没有影响。

有什么建议么?

谢谢。

4

2 回答 2

1

我遇到了同样的问题,并在这个共同提示的 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
于 2017-08-18T16:19:27.783 回答
0

对于那些感兴趣的人......我不确定这是否是正确的方法,但是:

  1. 我最终删除了

    return yield Promise.resolve(true);

  2. 然后添加为我的.then函数的最后一行

    process.exit(0);

同样,不确定这是否是最好的方法,但它确实有效。

于 2017-04-07T00:52:17.540 回答