2017-04-05 5 views
0

Je tente d'écrire une application node cli. Il fonctionne, cependant, il ne revient pas à la ligne de commande (au moins pas dans Windows, n'ont pas encore essayé dans bash). Je dois Ctrl+Break hors de l'application.npm cli avec co/rendement non terminé

#!/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); 
}); 

J'ai aussi essayé sans la ligne return yield Promise.resolve(true); mais cela n'a aucun effet.

Des suggestions?

Merci.

Répondre

0

Pour ceux qui sont intéressés ... Je ne suis pas sûr que ce soit le droit chemin, mais:

  1. J'ai fini par enlever

    return yield Promise.resolve(true);

  2. puis en ajoutant que la dernière ligne de ma fonction .then

    process.exit(0);

Encore une fois, je ne sais pas si c'est la meilleure approche, mais cela fonctionne.

0

J'ai eu le même problème et trouvé une autre solution dans this co-invite problème 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