LoginSignup
6
5

More than 5 years have passed since last update.

LaravelのHomestead上のnpm installでMaximum call stack size exceededが発生する場合

Last updated at Posted at 2019-01-03

事象

環境は以下の通り。

  • Win10
  • VirtualBoxでLaravelのHomesteadを構築

Laravelで開発環境作成中に、npm installが必要となったので実施したところ、Maximum call stack size exceededが発生した。

なお、Laravelのドキュメントによると、Windowsでは(Windowsをホストとした仮想環境上でも)次のコマンドでインストールするとのこと。

npm install --no-bin-links

ログを見ると次のような内容。

12920 verbose stack RangeError: Maximum call stack size exceeded
12920 verbose stack     at RegExp.test (<anonymous>)
12920 verbose stack     at isDepOptional (/usr/lib/node_modules/npm/lib/install/deps.js:398:27)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:414:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)
12920 verbose stack     at failedDependency (/usr/lib/node_modules/npm/lib/install/deps.js:430:9)

対処

.npmrcの削除

~/.npmrcを削除すると解消される。
https://github.com/angular/angular-cli/issues/12231
→そもそも~/.npmrcが存在しなかった。

npm installをホスト側(Windows上)で行う

Windows上で以下のコマンドを実行。(Win版node.jsはインストールされている前提)

npm install --no-bin-links
npm rebuild --no-bin-links

何故両方必要なのかはわかっていないが、情報ソースのまま行ってみている。

この後、ゲスト側(Homestead上)で必要なnpmのコマンドを認識できるようになった。

後からわかったこと

これで一旦node_moduleが入ったからと、ゲストOS(Linux側)でnpmを実行すると失敗する。
結局、npm系操作は全てホスト側(windows側)で実行しなければならない。

所感

コーディングや環境の話はHomestead上で完結すると思っていたのに、npm関係はWindows上で行わなければならないのはかなりの衝撃。
多分Windowsのファイルシステムが独特なのだろうなと思うのだが、これは結構嫌な感じ。
いちいちLaravelのコマンドはHomestead、npmの更新はWindowsというのはセンス悪い。。

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5