我尝试将一些自定义函数添加到NodeJS的FS模块中,该模块是NodeJS的一部分。核心计划。我在以下位置找到了相应的文件(fs.js):/ usr / lib / 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加载它?
任何解决此问题的想法都将不胜感激。
谢谢!
答案 0 :(得分:4)
fs
是NodeJS的一部分&#39; Core Modules。因此,它被编译成二进制和分布式。因此,除非重新编译它们,否则修改源代码不会生效。
直接修改Node的源文件无论如何都不是一个好主意。您可以/应该改为使用您自己的函数扩展现有fs
模块,例如graceful-fs,或者将其完全替换为您的版本,例如fs-extra。