[英]replace a function in public npm package
因此,我使用的是api包装程序包,该程序包再次将请求用于api请求。 在大多数设置中都能正常工作。 但是我想在节点Webkit环境中使用该软件包,并使用XHR代替请求模块。 它可以与API一起使用,并且如果我重写模块也可以。 但是由于更新的舒适性,我不想这样做。 因此,分叉不是我的选择。 是否可以在不更换模块的情况下更换模块中的一个功能。
var request = require('request');
var makeRequest = function(path, args, secure, callback, encoding) {
var maxlen = 2048;
var path = buildUrl(path, args);
if (path.length > maxlen) {
throw new Error("Request too long for google to handle (2048 characters).");
}
var options = {
uri: (secure ? 'https' : 'http') + '://some.api.com' + path
};
if (encoding) options.encoding = encoding;
if (config('proxy')) options.proxy = config('proxy');
if (typeof callback === 'function') {
request(options, function (error, res, data) {
if (error) {
return callback(error);
}
if (res.statusCode === 200) {
return callback(null, data);
}
return callback(new Error("Response status code: " + res.statusCode), data);
});
}
return options.uri;
};
module.exports = makeRequest;
所以现在我想在不更改makeRequest的情况下替换整个makeRequest函数的request函数。 因此,基本上我想覆盖该功能。
编辑:添加代码示例。
看看ReWire的或proxyquire ,能够解决您的问题。
如果您使用的模块仅在内部使用makeRequest,我看不到任何其他解决方案,即使只有在您需要的模块(文件)中需要makeRequest的情况下,此方法也才有效。
但请记住,这可能是不好的,通常应仅用于测试。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.