Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 安全正确地修补Node.js中的require函数_Javascript_Node.js_Commonjs - Fatal编程技术网

Javascript 安全正确地修补Node.js中的require函数

Javascript 安全正确地修补Node.js中的require函数,javascript,node.js,commonjs,Javascript,Node.js,Commonjs,Monkeypatching node.js中的require函数可能很有用,特别是对于某些库。我正试图弄清楚如何才能正确、安全地完成这件事 以下是我所拥有的: const Mod = require('module'); const req = Mod.prototype.require; Mod.prototype.require = function () { // do some side-effect of your own req.apply(this, argument

Monkeypatching node.js中的require函数可能很有用,特别是对于某些库。我正试图弄清楚如何才能正确、安全地完成这件事

以下是我所拥有的:

const Mod = require('module');

const req = Mod.prototype.require;

Mod.prototype.require = function () {
  // do some side-effect of your own
  req.apply(this, arguments);
};
然而,这不是很有效,我不知道为什么。我从调试模块中获得此错误:

TypeError: Cannot set property 'init' of undefined
    at Object.<anonymous> (/Users/alexamil/WebstormProjects/oresoftware/sumanjs/suman/node_modules/debug/src/node.js:15:14)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
    at Module.require (module.js:498:17)
    at Module.Mod.require (/Users/alexamil/WebstormProjects/oresoftware/sumanjs/suman/lib/index.js:11:9)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/Users/alexamil/WebstormProjects/oresoftware/sumanjs/suman/node_modules/debug/src/index.js:9:20)
TypeError:无法设置未定义的属性'init'
反对。(/Users/alexamil/webstorprojects/oresoftware/sumanjs/suman/node_modules/debug/src/node.js:15:14)
在模块处编译(模块js:571:32)
在Object.Module.\u extensions..js(Module.js:580:10)
在Module.load(Module.js:488:32)
在tryModuleLoad时(module.js:447:12)
在Function.Module.\u加载(Module.js:439:3)
at Module.require(Module.js:498:17)
在Module.Mod.require(/Users/alexamil/webstorprojects/oresoftware/sumanjs/suman/lib/index.js:11:9)
根据需要(内部/module.js:20:19)
反对。(/Users/alexamil/webstorprojects/oresoftware/sumanjs/suman/node_modules/debug/src/index.js:9:20)

如果我的代码正常,那么也许我应该仔细看看调试模块在做什么?

您没有返回结果:

Mod.prototype.require = function () {
  // do some side-effect of your own
  return req.apply(this, arguments);
};
如果没有
return
,您的包装器将始终返回
undefined