首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用vorpal js的cli应用程序中不工作的日志函数

使用vorpal js的cli应用程序中不工作的日志函数
EN

Stack Overflow用户
提问于 2018-11-06 09:18:03
回答 1查看 87关注 0票数 0

我正在创建一个使用节点js & vorpal的cli应用程序。没有语法错误或警告,所有的工作都完美,除了漩涡日志不工作。下面是一个小代码片段。

代码语言:javascript
复制
//functions.js

const mkdir = require('mkdirp');

function makeDir(dirname,location) {
    let p = `${location}/${dirname}`;
    mkdir(p, function(err) {
        if (err) return err;
        return `Directory ${dirname} created !`;
    });
}
module.exports.makeDir = makeDir;

代码语言:javascript
复制
//main.js

const app = require('vorpal')();
const functions = require('./functions');

app
    .command('newdir <name> <location>', 'Create new database')
    .action(function(args,cb) {
        let name = args.name;
        let location = args.location;
        functions.makeDir(name,location,function(err,msg) {
            if (err) this.log(err);
            this.log(msg);  //nothing gets logged
        });
        cb();
    });

app
.delimiter('app $')
.show();

正如我说的,一切都很好&创建了目录,但没有显示日志。

我尝试过的是:使用app.log &使用app.session.log。它甚至不记录自定义字符串,例如: this.log('Hello')

系统: Windows

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-06 16:32:51

应该对makeDir函数进行编码,以接受回调,并在传递适当信息时调用它,如下所示:

代码语言:javascript
复制
const mkdir = require('mkdirp');

function makeDir(dirname,location, callback /* accept a callback */ ) {
    let p = `${location}/${dirname}`;
    mkdir(p, function(err) {
        if (callback)
          callback(err ? err : null, err? null : `Directory ${dirname} created !`);
    });
}
module.exports.makeDir = makeDir;

然后你就可以:

代码语言:javascript
复制
functions.makeDir(name,location,function(err,msg) {
  if (err) this.log(err);
  this.log(msg);  //nothing gets logged
} /* callback now is accepted */ );

在你的行动。

PS确保将this引用绑定到回调,例如使用Function.prototype.bind,以便在回调中使用this.log时不会得到有趣的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53168880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档