4

该程序不会在控制台中终止,我必须使用 Ctrl-C。文档没有提供任何线索。尝试了各种方法,例如 Return 但无法让它终止,它只是挂在控制台中。控制台中的最后一件事是“现在我们在这里”。

var fs = require('fs');
var path = require('path');
var co = require('co');
var prompt = require('co-prompt');
var program = require('commander');

program
.arguments('<file>')
.option('-i, --Object name <objectName>', 'DP device IP address')
.action(function(file) {
    co(function *() {
        var objectName = yield prompt('Object Name: ');
        console.log('\nObject Name: %s file: %s',objectName, file);
        notmain(file, objectName);
        console.info('now we are here');
    });
})
.parse(process.argv);

function notmain(file, objectName) {
    try {
        var normalPath = path.normalize(__dirname + '/' + file);
        console.info('\nfile path  ' + normalPath);
        certstring = fs.readFileSync(normalPath).toString();
        console.info('\nstring of cert file is  \n' + certstring);
        clientcert = fs.readFileSync(normalPath).toString('base64');
        console.info('\nbase64 string of cert file is  \n' + clientcert);
        var newJson = {};
        newJson.name = objectName;
        newJson.content = clientcert;
        var newfile = {"file": newJson};
        console.info('\nnew json for cert object  ' +     JSON.stringify(newfile));
        console.info('\nclient certificate read from directory  ');
    } catch (err) {
        console.info('file path  ' + normalPath);
        console.info('client certificate file not found');
        return;
    }
}
4

2 回答 2

0
co(function *() {
        var objectName = yield prompt('Object Name: ');
        console.log('\n1 Object Name: %s file: %s',objectName, file);
        var normalPath = path.normalize(__dirname + '/' + file);
        console.info('\n2 file path  ' + normalPath);
        fs.readFile(normalPath, function(err, data) {
            if (err) {
                throw err;
            }
            console.info('\n4 string of cert file is  \n' + data);
            if (!(data.includes('BEGIN CERTIFICATE'))) {
                throw 'invalid file type';
            }
            let b64 = data.toString('base64');
            notmain(b64, objectName, results);
        })
        process.stdin.pause();
    })
于 2016-11-24T07:52:04.840 回答
0

控制台正在等待更多输入。尝试在“现在我们在这里”行之后添加它。

process.stdin.pause();

像这样

co(function *() {
    var objectName = yield prompt('Object Name: ');
    console.log('\nObject Name: %s file: %s',objectName, file);
    notmain(file, objectName);
    console.info('now we are here');
    process.stdin.pause();
});
于 2016-11-23T08:26:10.077 回答