Node.js:找不到模块“chai”

26

我试图按照https://mochajs.org/的第一个示例进行操作。

已完成此操作。

$ npm install -g mocha

Got
C:\Windows\system32>npm install -g mocha
npm WARN deprecated jade@0.26.3: Jade has been renamed to pug, please install th
e latest version of pug instead of jade
npm WARN deprecated graceful-fs@2.0.3: graceful-fs version 3 and before will fai
l on newer node releases. Please update to graceful-fs@^4.0.0 as soon as possibl
e.
C:\Users\TestUser\AppData\Roaming\npm\_mocha -> C:\Users\TestUser\AppData\Roamin
g\npm\node_modules\mocha\bin\_mocha
C:\Users\TestUser\AppData\Roaming\npm\mocha -> C:\Users\TestUser\AppData\Roaming
\npm\node_modules\mocha\bin\mocha
mocha@2.4.5 C:\Users\TestUser\AppData\Roaming\npm\node_modules\mocha
├── escape-string-regexp@1.0.2
├── growl@1.8.1
├── commander@2.3.0
├── diff@1.4.0
├── supports-color@1.2.0
├── debug@2.2.0 (ms@0.7.1)
├── mkdirp@0.5.1 (minimist@0.0.8)
├── jade@0.26.3 (commander@0.6.1, mkdirp@0.3.0)
└── glob@3.2.3 (inherits@2.0.1, graceful-fs@2.0.3, minimatch@0.2.14)

还安装了chai(抱歉,我最初忘记提到它了)

C:\Windows\system32>npm install -g chai
chai@3.5.0 C:\Users\TestUser\AppData\Roaming\npm\node_modules\chai
├── assertion-error@1.0.1
├── type-detect@1.0.0
└── deep-eql@0.1.3 (type-detect@0.1.1)

这里是代码

var assert = require('chai').assert;
describe('Array', function() {
  describe('#indexOf()', function () {
    it('should return -1 when the value is not present', function () {
      assert.equal(-1, [1,2,3].indexOf(5));
      assert.equal(-1, [1,2,3].indexOf(0));
    });
  });
});

Keep getting.
Error: Cannot find module 'chai'
at Function.Module._resolveFilename (module.js:325:15)
at Function.Module._load (module.js:276:25)
at Module.require (module.js:353:17)
at require (internal/module.js:12:17)
at Object.<anonymous> (c:\git\develop\SendText\test\test2.js:1:76)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)

我做错了什么?

6个回答

66

您已经使用-g选项全局安装了chai,这就是为什么require找不到它。

您需要在node_modules目录下本地安装它,这样require才能找到它。

要这样做,请输入:

npm install --save-dev chai

chai已经安装,但是似乎还没有被识别出来,我很抱歉。 - aaa
2
你已经全局安装了 chai(使用 -g),你需要在项目目录中本地安装它。 - Blackus
2
谢谢。那个方法可行。但是全局安装的意义在哪里呢? - aaa
1
通常,在全局安装的程序包是我们在终端使用的,有点像一个“独立”的程序。bower是一个完美的例子。;) - Blackus

4

您需要在本地安装 chai 才能使用 require 命令。

npm install chai

chai已经安装,但是似乎还没有被识别出来,我很抱歉。 - aaa
Chai已作为全局包安装,但要求它,您需要在本地安装它。您可以使用文档了解Node.js中require的工作原理。 - Анатолий Смакаев

1
你应该安装chai。 $ npm install --save chai

chai已经安装,但是似乎还没有被识别出来,我很抱歉。 - aaa

1
$ npm install chai

chai@3.5.0 ../../../../../../node_modules/chai
├── assertion-error@1.0.2
├── type-detect@1.0.0
└── deep-eql@0.1.3 (type-detect@0.1.1)

-MacBook-Air:test $ mocha


  Array
    #indexOf()
      ✓ should return -1 when the value is not present


  1 passing (9ms)

0

你需要确保两个安装程序在同一个文件夹中, 因为如果 node_modules 文件夹(在 mocha 安装期间创建)不在安装 chi 的文件夹中, 则会出现错误:无法找到模块“chai”。

npm install --global mocha

npm install chi

npm test(测试已成功执行)


0

npm install types/chai

在本地驱动器中安装


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接