LoginSignup
1
2

More than 3 years have passed since last update.

Laravel/uiを入れたらnpmが通らない[apt-get等でnpmとnodeが古いケース+Docker環境]

Last updated at Posted at 2020-02-06

ハマったので備忘録。

問題


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を修正

1
2
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
1
2