修改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那样。