2017-04-01 99 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