修改NodeJS核心程序

问题描述:

我试图将一些自定义函数添加到NodeJS的FS模块中,该模块是NodeJS核心程序的一部分。我在以下位置找到相应的文件(fs.js):/ usr/lib/nodejs。问题是当我调用相应的模块和函数时,我所做的更改似乎不会影响任何内容。修改NodeJS核心程序

我所做的是我加入/usr/lib/nodejs/fs.js这样的功能:

 fs.someRandomFunc = function(){return 'Yeah!'} 

然而,当我打电话的功能,它的回答是:

 var fs = require('fs') 
     console.log(fs.someRandomFunc()) 

     // Error Message 
     TypeError: Object #<Object> has no method 'someRandomFunc' 

顺便说一句,这也发生在其他核心模块,如module.js和path.js.发生这种情况是因为NodeJS缓存了核心JS程序而不是从/ usr/lib/nodejs加载它?

任何想法来解决这个问题,将不胜感激。

谢谢!

fs是NodeJS'Core Modules的一部分。因此,它被编译成二进制和分布式。因此,修改源文件不会生效,除非您重新编译它们。

无论如何,直接修改Node的源文件不是一个好主意。你可以/应该改为使用你自己的功能扩展现有的fs模块,比如graceful-fs呢,或者用你的版本完全替换它,就像fs-extra那样。