#目次
- はじめに
- 開発環境
- 前提
- 生じた問題
- 対応策
- まとめ
- 参考記事
#はじめに
この記事では、Vagrantを用いてnpm installを行おうとしたときに生じたエラーについて扱います。
私の開発環境は以下の通りですので、ホストOSがwindows環境の方などは注意してください。
##開発環境
ハードウェア
項目 | 内容 |
---|---|
OS | mac OS Big Sur 11.5 |
端末種類 | MacBook Air (Retina, 13-inch, 2020) |
プロセッサ | 1.1 GHz クアッドコアIntel Core i5 |
メモリ | 16 GB 3733 MHz LPDDR4X |
グラフィックス | Intel Iris Plus Graphics 1536 MB |
ソフトウェア
項目 | ホストOSバージョン | ゲストOSバージョン |
---|---|---|
Vagrant | 2.2.13 | - |
VirtualBox | 6.1.16 | - |
node.js | 16.0.0 | 8.16.2->10.16.2 |
npm | 7.10.0 | 6.4.1->6.9.0 |
私の場合は、上記に加えて、チーム開発のためpackage.jsonが既に与えられている状態でした。
#生じた問題
- npm installを行うと、以下のようなエラーが出ました。
vagrant(terminal)
npm ERR! path /home/vagrant/code/node_modules/acorn-dynamic-import/node_modules/acorn/package.json.2270336935
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall open
npm ERR! enoent ENOENT: no such file or directory, open '/home/vagrant/code/node_modules/acorn-dynamic-import/node_modules/acorn/package.json.2270336935'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
#対応策
まず、Vagrantの共有フォルダ上で'npm install'が動かない場合の対処法およびnpm トラブルシューティングを試してみてください。
私の環境下では、上記方法でも解決しませんでした。そのため、以下の対処を行いました。
- vagrantにnvmをインストールした。
- nvmのインストール方法はこちら(Vagrantで【nvm】を使用して《node.js》と《npm》を入れる方法)を参照してください。
- nvmでなくても、node.jsとnpmのバージョン管理ができるものであれば良いです。
- その後、nvmを用いて、node.jsとnpmのバージョンアップを行いました。
- 用いるべきバージョンは、各人によって異なります。
- 上記問題の原因は、package.jsonにおいて求められているnode/npmのバージョンが、ゲストOS環境のnode/npmバージョンと一致していないことにあります。
- そのため、ホストOSのnode/npmのバージョンがpackage.jsonの必要とするバージョンを満たす場合、上記URLの「ホスト側でnpm installする」ことで解決することになります。
- ホストOS, ゲストOSのどちらもがnode/npmのバージョン条件を満たさないために、エラーが残ってしまっていたみたいです。
- 私の場合は、nodeを10.16.2にアップグレードすることで利用可能になりました。
- バージョンを上げすぎてもpackage.json側の要件によってはエラーが生じるため、いくつかバージョンを変えて試してみてください。
#まとめ
- Vagrantの共有フォルダ上で'npm install'が動かない場合の対処法
- npm トラブルシューティング
- node.jsとnpmのバージョンを、package.jsonの条件にしたがってアップデートする。
#参考記事
gitにissueがありました。
NPM Install failing on clean homestead box