インストール

インストールはnpmで行います。

npm install mocha

ディレクトリ /home/vagrant/work/js/mocha/ でインストールするサンプル。 Node.js、npmのバージョンは以下になります。

$ node --version
v6.17.1

$ npm --version
3.10.10

npmでインストールすると以下のようになります。

$ npm install mocha
/home/vagrant/work/js/mocha
└─┬ mocha@6.1.4 
  ├── ansi-colors@3.2.3 
  ├── browser-stdout@1.3.1 
  ├── debug@3.2.6 
  ├── diff@3.5.0 
  ├── escape-string-regexp@1.0.5 
  ├─┬ find-up@3.0.0 
  │ └─┬ locate-path@3.0.0 
  │   ├─┬ p-locate@3.0.0 
  │   │ └─┬ p-limit@2.2.0 
  │   │   └── p-try@2.2.0 
  │   └── path-exists@3.0.0 
  ├─┬ glob@7.1.3 
  │ ├── fs.realpath@1.0.0 
  │ ├─┬ inflight@1.0.6 
  │ │ └── wrappy@1.0.2 
  │ ├── inherits@2.0.4 
  │ ├── once@1.4.0 
  │ └── path-is-absolute@1.0.1 
  ├── growl@1.10.5 
  ├── he@1.2.0 
  ├─┬ js-yaml@3.13.1 
  │ ├─┬ argparse@1.0.10 
  │ │ └── sprintf-js@1.0.3 
  │ └── esprima@4.0.1 
  ├─┬ log-symbols@2.2.0 
  │ └─┬ chalk@2.4.2 
  │   ├─┬ ansi-styles@3.2.1 
  │   │ └─┬ color-convert@1.9.3 
  │   │   └── color-name@1.1.3 
  │   └── supports-color@5.5.0 
  ├─┬ minimatch@3.0.4 
  │ └─┬ brace-expansion@1.1.11 
  │   ├── balanced-match@1.0.0 
  │   └── concat-map@0.0.1 
  ├─┬ mkdirp@0.5.1 
  │ └── minimist@0.0.8 
  ├── ms@2.1.1 
  ├─┬ node-environment-flags@1.0.5 
  │ ├─┬ object.getownpropertydescriptors@2.0.3 
  │ │ └─┬ es-abstract@1.13.0 
  │ │   ├─┬ es-to-primitive@1.2.0 
  │ │   │ ├── is-date-object@1.0.1 
  │ │   │ └── is-symbol@1.0.2 
  │ │   ├── has@1.0.3 
  │ │   ├── is-callable@1.1.4 
  │ │   └── is-regex@1.0.4 
  │ └── semver@5.7.0 
  ├─┬ object.assign@4.1.0 
  │ ├── define-properties@1.1.3 
  │ ├── function-bind@1.1.1 
  │ ├── has-symbols@1.0.0 
  │ └── object-keys@1.1.1 
  ├── strip-json-comments@2.0.1 
  ├─┬ supports-color@6.0.0 
  │ └── has-flag@3.0.0 
  ├─┬ which@1.3.1 
  │ └── isexe@2.0.0 
  ├─┬ wide-align@1.1.3 
  │ └─┬ string-width@2.1.1 
  │   ├── is-fullwidth-code-point@2.0.0 
  │   └─┬ strip-ansi@4.0.0 
  │     └── ansi-regex@3.0.0 
  ├─┬ yargs@13.2.2 
  │ ├─┬ cliui@4.1.0 
  │ │ └─┬ wrap-ansi@2.1.0 
  │ │   ├─┬ string-width@1.0.2 
  │ │   │ ├── code-point-at@1.1.0 
  │ │   │ └─┬ is-fullwidth-code-point@1.0.0 
  │ │   │   └── number-is-nan@1.0.1 
  │ │   └─┬ strip-ansi@3.0.1 
  │ │     └── ansi-regex@2.1.1 
  │ ├── get-caller-file@2.0.5 
  │ ├─┬ os-locale@3.1.0 
  │ │ ├─┬ execa@1.0.0 
  │ │ │ ├─┬ cross-spawn@6.0.5 
  │ │ │ │ ├── nice-try@1.0.5 
  │ │ │ │ ├── path-key@2.0.1 
  │ │ │ │ └─┬ shebang-command@1.2.0 
  │ │ │ │   └── shebang-regex@1.0.0 
  │ │ │ ├─┬ get-stream@4.1.0 
  │ │ │ │ └─┬ pump@3.0.0 
  │ │ │ │   └── end-of-stream@1.4.1 
  │ │ │ ├── is-stream@1.1.0 
  │ │ │ ├── npm-run-path@2.0.2 
  │ │ │ ├── p-finally@1.0.0 
  │ │ │ ├── signal-exit@3.0.2 
  │ │ │ └── strip-eof@1.0.0 
  │ │ ├─┬ lcid@2.0.0 
  │ │ │ └── invert-kv@2.0.0 
  │ │ └─┬ mem@4.3.0 
  │ │   ├─┬ map-age-cleaner@0.1.3 
  │ │   │ └── p-defer@1.0.0 
  │ │   ├── mimic-fn@2.1.0 
  │ │   └── p-is-promise@2.1.0 
  │ ├── require-directory@2.1.1 
  │ ├── require-main-filename@2.0.0 
  │ ├── set-blocking@2.0.0 
  │ ├─┬ string-width@3.1.0 
  │ │ ├── emoji-regex@7.0.3 
  │ │ └─┬ strip-ansi@5.2.0 
  │ │   └── ansi-regex@4.1.0 
  │ ├── which-module@2.0.0 
  │ └── y18n@4.0.0 
  ├─┬ yargs-parser@13.0.0 
  │ ├── camelcase@5.3.1 
  │ └── decamelize@1.2.0 
  └─┬ yargs-unparser@1.5.0 
    ├─┬ flat@4.1.0 
    │ └── is-buffer@2.0.3 
    ├── lodash@4.17.14 
    └─┬ yargs@12.0.5 
      ├── get-caller-file@1.0.3 
      ├── require-main-filename@1.0.1 
      └── yargs-parser@11.1.1 

npm WARN enoent ENOENT: no such file or directory, open '/home/vagrant/work/js/mocha/package.json'
npm WARN mocha No description
npm WARN mocha No repository field.
npm WARN mocha No README data
npm WARN mocha No license field.

トラブル

WindowsがホストOSの場合、vagrant共有ディレクトリでシンボリックリンク作成が失敗する

mochaのインストールで以下のようなエラーが発生しました。どうもシンボリックリンク作成で失敗しているようです。

$ npm install mocha
npm WARN enoent ENOENT: no such file or directory, open \'/vagrant/prog/js/work/tax/package.json\'
npm WARN tax No description
npm WARN tax No repository field.
npm WARN tax No README data
npm WARN tax No license field.

npm ERR! code EPROTO
npm ERR! syscall symlink
npm ERR! path ../esprima/bin/esvalidate.js
npm ERR! dest /vagrant/prog/js/work/tax/node_modules/.bin/esvalidate
npm ERR! errno -71
npm ERR! EPROTO: protocol error, symlink \'../esprima/bin/esvalidate.js\' -> \'/vagrant/prog/js/work/tax/node_modules/.bin/esvalidate\'

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/vagrant/.npm/_logs/2019-08-07T12_30_29_819Z-debug.log
原因は、windowsのディレクトリをvagrantの共有ディレクトリとしていると、シンボリックリンクの作成が禁止されていることでした。 これはセキュリティやWindowsのパスの長さ制限などのためのようです。 そのため、vagrantの共有ディレクトリでないところに移動してインストールすると、正常にできました。

別の方法が無いかと調べると、以下のページが見つかりました。

ここに書かれているオプション --no-bin-links を付けて実行するとインストールが正常に完了しました。
$ npm install mocha --no-bin-links
npm WARN saveError ENOENT: no such file or directory, open \'/vagrant/prog/js/work/tax/package.json\'
npm notice created a lockfile as package-lock.json. You should commit this file.
npm WARN enoent ENOENT: no such file or directory, open \'/vagrant/prog/js/work/tax/package.json\'
npm WARN tax No description
npm WARN tax No repository field.
npm WARN tax No README data
npm WARN tax No license field.

+ mocha@6.2.0
added 115 packages from 517 contributors and audited 224 packages in 6.669s
found 0 vulnerabilities