ハマったので備忘録。
問題
Laravel/uiを入れた後には npm installして必要なモジュールをインストールする。自分の場合は開発環境でdocker越しにlaravelの環境を動かしていて、
npmは
apt-get install -y node npm
でインストールしていた。その後、
$ composer require laravel/ui
$ php artisan ui vue --auth
でlaravel/uiをインストールした後、
$ npm install
が途中で止まって進まない。
という問題に直面した。
IEEEなんたらうろ覚えというモジュールの近辺で静止する。
解決
ログを見ると実行した直後に警告が出ており、現在のnpmとnodeは対応してないという警告が出ていた。 どうもapt-getで得られていたnpmとnodeのバージョンが古いようで、 apt-getではなく、npmとnodeを公式のホームページから直接インストールすることで解決した。 (下のDockerfileの今回の解決手順の所を参考)dockerのコンテナで動かしていたため、自分はアンインストールは不要だったが、
自動的にnpmとnodeのインストールが破棄されない場合は、
アンインストールの手順が必要になるかもしれない。
Dockerfile[参考]
FROM php:7.4.2-apache
RUN apt-get update
#composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
&& php -r "if (hash_file('sha384', 'composer-setup.php') === 'c5b9b6d368201a9db6f74e2611495f369991b72d9c8cbd3ffbc63edff210eb73d46ffbfce88669ad33695ef77dc76976') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer
RUN composer self-update
#node,npm install--今回の解決手順
#nodeのversionは必要に応じて変更すること。
#Dockerでない場合はnode npmのアンインストールがおそらく必要(手順未確認)。
#アンインストールが成功した場合は、RUN以下をlinuxコマンドに読み替えて実行する。
RUN apt-get install -y wget
&& wget https://nodejs.org/dist/v12.14.1/node-v12.14.1-linux-x64.tar.xz
&& tar -xf node-v12.14.1-linux-x64.tar.xz
&& mv node-v12.14.1-linux-x64/bin/* /usr/local/bin/
&& mv node-v12.14.1-linux-x64/lib/node_modules/ /usr/local/lib/
#php plugin install
RUN docker-php-ext-install pdo_mysql mysqli
#for Laravel rooting
#このコンテナのイメージ元のphp:7.4.2-apacheではrewirte.soが標準で読み込まれていない。
#Laravelのrootingには必要なモジュールなので読み込ませる。
RUN mv /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/
#debug soft install
RUN apt-get -y install vim
追記:
本当はnpm、http、composerは別コンテナにしたり、
dockerのレイヤーを考えてapt等を一つに纏めた方が
良いのかもしれないけれども、参考までに。
追記2:
rootingが動かなかったので動くように参考のDockerfileを修正