javascript – 如何載入節點模組,就像當前模組位於其他地方一樣?
我有一些在一個模組中執行的nodejs程式碼.從這個模組,我想載入位於檔案系統完全不同的位置的模組 – 例如,給定路徑“/ another / dir”和模組名稱“foo”,我想讓Node作為如果在/ another / dir中執行的模組已呼叫require(“foo”),而不是我自己的模組.
My code is running here /some/folder/node_modules/mine/my_module.js I have the path "/another/dir/", the string "foo", and want to load this module /another/dir/node_modules/foo/index.js
換句話說,ofollow,noindex" target="_blank">module documentation 是指在路徑Y處的模組“require(X)”,並且我想為Y指定我自己的值
這可以實現嗎如果是這樣,怎麼辦?如果沒有,為什麼不呢?
最簡單的就是將路徑解決為一個絕對的路徑,這將是絕大多數情況下推薦的方法.
var path = require('path'); var basedir = '/another/dir'; var dirname = 'foo'; var filepath = path.join(basedir, 'node_modules', filename); var imports = require(filepath);
如果您真的需要將require作為就像在另一個目錄中一樣,
您可以將基本目錄推送到module.paths
module.paths.unshift('/another/dir/node_modules'); var imports = require('foo'); module.paths.shift();
module.paths也可以通過環境變數NODE_PATH外部修改,這將是最不推薦的方法,但這在全域性範圍內都適用於所有模組.
http://stackoverflow.com/questions/40366008/how-do-i-load-a-node-module-as-if-the-current-module-were-located-somewhere-else