npm cli,co/yield不会结束



我正在尝试编写一个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

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

  1. 我最终删除了

    return yield Promise.resolve(true);

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

    process.exit(0);

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

相关内容

  • 没有找到相关文章

最新更新