2017-04-05 13 views
0

我试图写一个node cli应用程序。它工程,但是,它不返回到命令行(至少不是在Windows中,还没有在bash中尝试过)。我不得不Ctrl+Break出应用程序。npm cli co/yield没有结束

#!/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);但是这并没有影响。

有什么建议吗?

谢谢。

回答

0

对于那些有兴趣......我不知道这是否是正确的方式,但:

  1. 我最终消除

    return yield Promise.resolve(true);

  2. 再加入如我的最后一行.then功能

    process.exit(0);

再次,不知道这是否是最好的方法,但它确实有效。

0

我有同样的问题,并发现另一个解决方案this共同提示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