W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
我們已經(jīng)知道,require
函數(shù)支持斜杠(/
)或盤符(C:
)開頭的絕對路徑,也支持./
開頭的相對路徑。但這兩種路徑在模塊之間建立了強耦合關系,一旦某個模塊文件的存放位置需要變更,使用該模塊的其它模塊的代碼也需要跟著調(diào)整,變得牽一發(fā)動全身。因此,require
函數(shù)支持第三種形式的路徑,寫法類似于foo/bar
,并依次按照以下規(guī)則解析路徑,直到找到模塊位置。
內(nèi)置模塊
如果傳遞給require
函數(shù)的是NodeJS內(nèi)置模塊名稱,不做路徑解析,直接返回內(nèi)部模塊的導出對象,例如require('fs')
。
node_modules目錄
NodeJS定義了一個特殊的node_modules
目錄用于存放模塊。例如某個模塊的絕對路徑是/home/user/hello.js
,在該模塊中使用require('foo/bar')
方式加載模塊時,則NodeJS依次嘗試使用以下路徑。
/home/user/node_modules/foo/bar
/home/node_modules/foo/bar
/node_modules/foo/bar
NODE_PATH環(huán)境變量
與PATH環(huán)境變量類似,NodeJS允許通過NODE_PATH環(huán)境變量來指定額外的模塊搜索路徑。NODE_PATH環(huán)境變量中包含一到多個目錄路徑,路徑之間在Linux下使用:
分隔,在Windows下使用;
分隔。例如定義了以下NODE_PATH環(huán)境變量:
NODE_PATH=/home/user/lib:/home/lib
當使用require('foo/bar')
的方式加載模塊時,則NodeJS依次嘗試以下路徑。
/home/user/lib/foo/bar
/home/lib/foo/bar
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: