2014-10-08 69 views
2

我試圖將一些自定義函數添加到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加載它?

任何想法來解決這個問題,將不勝感激。

謝謝!

回答

4

fs是NodeJS'Core Modules的一部分。因此,它被編譯成二進制和分佈式。因此,修改源文件不會生效,除非您重新編譯它們。

無論如何,直接修改Node的源文件不是一個好主意。你可以/應該改爲使用你自己的功能擴展現有的fs模塊,比如graceful-fs呢,或者用你的版本完全替換它,就像fs-extra那樣。