問題描述
在node上運行程式時,當module一多常常會發生module無法require問題,或者呼叫module內的function時系統會出現
TypeError: Lib.xxxxx is not a function
require的module會呈現空object的現象,以下我們來探討發生該情況是什麼原因 ?
1. Require路徑錯誤
很有可能在檔案一開始的路徑就是錯的,當專案非常龐大時,資料夾的階層也可能錯綜複雜,導致require階層錯誤的情形
const Module1 = require('../../../Module1')
我們可以使用IDE或Module路徑定義來解決問題
const path = {
module1 : '/path/to/module1',
module2 : '/path/to/module2',
...
}
const Module1 = require(path.module1)
2. Function Name錯誤
第二種情況就是單純自己打錯function name而已,解法也是多利用IDE的功能
個人很推薦微軟的vscode,功能真的很強大 !
3. Require module 形成loop
意思是你有A, B兩個module時,A module引用 B module 且同時 B module也引用 A module,就會發生呼叫module內function失敗的情況
此時我們可以使用npm的套件madge來檢查專案是否有circular dependencies的現象
1. 首先先將madge安裝至global環境中
npm install madge -g
2. 使用指令檢查專案是否有circular require的狀況
madge path/src/app.js --circular
3. 檢查結果,madge會顯示發生問題的檔案以及require的順序
在邏輯設計上就要避免這種loop引用module的事情發生,切記切記 !
文章標籤
全站熱搜
留言列表