gpt4 book ai didi

javascript - 使用 vorpal js 的 cli 应用程序中的日志功能不起作用

转载 作者:行者123 更新时间:2023-12-03 00:47:57 25 4
gpt4 key购买 nike

我正在使用 Node js 和 vorpal 创建一个 cli 应用程序。没有语法错误或警告,除了 vorpal 日志不起作用之外,一切都运行良好。下面是一个小代码片段。

//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;

//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

最佳答案

makeDir 函数应该被编码为接受回调并在完成时调用它并传递适当的信息,如下所示:

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;

然后你可以这样做:

functions.makeDir(name,location,function(err,msg) {
if (err) this.log(err);
this.log(msg); //nothing gets logged
} /* callback now is accepted */ );

在你的行动中。

PS 请确保将 this 引用绑定(bind)到回调,例如使用 Function.prototype.bind,这样在使用 this 时就不会得到有趣的结果。记录回调内的

关于javascript - 使用 vorpal js 的 cli 应用程序中的日志功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53168880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com