2017-04-01 109 views
0

我很困惑。我通過NPM在全球安裝了Mocha,因爲我可以從命令行(Windows)運行mocha,所以它在我的路徑中可用。柴/摩卡全球/本地

我也安裝了柴全球,但節點找不到它(Error: Cannot find module 'chai')。

因爲它們都以相同的方式安裝,爲什麼它們都不能全局訪問,爲什麼我研究過的所有網站都說我需要在本地安裝Chai?

+0

你能向我們展示一些你的代碼,你得到'柴未發現'的錯誤? –

+0

'var chai = require('chai');'顯然全局安裝的模塊默認情況下不可用於節點。爲什麼這麼多文章都說要在全球加載摩卡咖啡並在本地加載柴?連接答案?是否有一個很好的理由在同一臺機器上擁有Chai包的多個副本? – Robin

回答

0

爲什麼我研究過的所有網站都說我需要在本地安裝Chai?

兩個摩卡和柴應該在本地安裝,因此:

  1. 您消除您使用需要摩卡和柴等包潛在衝突。

  2. 您在您的package.json中指定了哪些版本的Mocha和Chai人員對您的項目有貢獻應該已經安裝以便運行測試。

問題的實質是,摩卡和柴都在不斷髮展:增加了新功能,新特性帶來了新的錯誤。在過去的不同時期,我不得不固定Mocha或Chai的版本,以至於我的一些軟件包因爲缺陷而使用了這些版本。例如,Mocha 2.4.x對我的測試套件可以正常工作,但Mocha 2.5引入了一個錯誤,導致我的測試失敗。解決此問題的最快方法是將Mocha的版本與我的項目一起使用,使其版本高於或等於2.4.0但低於2.5,並等到他們在2.5中產生修復。 (這真是一個真實的情況,儘管我不記得確切的版本號。)柴在歷史上的不同時刻也發生過同樣的情況。

當使用新的主要版本(例如2.x - > 3.x)進行發佈時,預計舊版本的代碼可能無法在新版本中使用。如果您有一個需要2.x的軟件包,但不能與3.x一起使用,另一個需要3.x但不能與2.x一起使用,並且他們嘗試使用該軟件包的全局安裝,這是一個問題。如果他們使用本地安裝的版本,他們可以使用他們需要的任何版本。

我無法重現您收到的錯誤消息。我可以在當地爲一個項目安裝Mocha,並讓它找到全球Chai沒有問題。

+0

無論我應該做什麼,我想要做的是將Mocha和Chai安裝在全球範圍內,並將其作爲一個單元一起工作。就像使用PHPUnit一樣,我可以在測試文件中使用'使用PHPUnit \ Framework \ TestCase;'並且嘿presto我有單元測試可用。 – Robin