用npm全局安裝模塊后,有時在程序使用的時候require會報找不到模塊,要如何解決?nodejs是在module.paths包含的目錄列表中尋找模塊的,所以,要解決這個問題就是將全局模塊加入到module.paths目錄列表中。
全局安裝模塊后在程序里面require這個模塊報錯,模塊找不到。如下圖所示,首先按照正常的方式npm install -g express全局安裝express模塊。然后在測試require('express')報錯
那么問題就出在nodejs怎么查找模塊上。首先,我們要知道npm全局安裝到底把模塊安裝到了哪個目錄下面。在終端運行npm prefix -g命令會打印出安裝路徑。而nodejs查找模塊是在module.paths目錄列表下面查找的。
所以,一種解決方案是在程序中將npm全局安裝路徑添加到module.paths中。
module.paths.push('全局安裝路徑')。然后再測試可行。
這種方案只對當前js有效。
另一種是添加環境變量NODE_PATH,值就設置成全局安裝路徑。如圖中所示,添加后測試可行。
其實,添加環境變量NODE_PATH后,我們再去查看module.paths時會發現環境變量中的路徑也已經在module.paths中了。
所以,最方便的解決辦法就是:npm prefix -g 找到全局安裝的路徑,然后添加到環境變量NODE_PATH中。
來自:https://m.html.cn/qa/node-js/10597.html