Laravel Mixをインストールする
Laravel Mixをインストールする上で詰まった部分をメモしておきます。
環境:Windows10, Vagrant, Docker
最初から以下のようにコマンドを叩いていけば楽だったかもしれない。。。( ;∀;)
npm install -g n
n latest
node -v
npm install @babel/core@^7.0.0 --no-bin-links
npm install --no-bin-links
npm run dev
nodejsのバージョン管理システム n を導入してnode.jsをアップグレードする
vagrant ssh
=> docker exec -it (phpのコンテナ) bash
=> cd src/example(作業するLaravelのディレクトリ)
で作業しているLaravelプロジェクトのルートまで行き、npmで n を導入します。
まず stable (安定板)をインストールします。
npm install -g n
n stable
node -v
安定板のバージョンに変わっていなければexitしてからもう一度入り直すと、変更が確認出来ました。
node -v : (stable版になっている)
laravelのルートディレクトリ(src/example)でlaravel mixをインストール
npm install
Vagrant内でインストールする場合は、以下のように–no-bin-linksをつけると良いです。
npm install --no-bin-links
私の場合stable版だとエラーが出て先に進めなかったので、nodeとnpmをlatest(最新版)にしました。
n latest 一回では最新版にならない場合もありましたので、先に最新版のバージョンを確認しましょう。
n --latest
n latest
n --latest // 最新版と照らし合わせて確認
latest版にして、laravel mixをインストールに再挑戦。
npm install --no-bin-links
npm WARN @babel/plugin-transform-named-capturing-groups-regex@7.4.4 requires a peer of
@babel/core@^7.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN @babel/plugin-transform-regenerator@7.4.4 requires a peer of
@babel/core@^7.0.0-0 but none is installed. You must install peer dependencies yourself.
npm WARN babel-loader@8.0.5 requires a peer of
@babel/core@^7.0.0 but none is installed. You must install peer dependencies yourself.
audited 16913 packages in 44.19s
found 0 vulnerabilities
どうやら、@babel/core@^7.0.0 は自分でインストールする必要があったので、自動で依存解決できない部分は手動でインストールしました。
npm install @babel/core@^7.0.0 --no-bin-links
インストール再々挑戦で、laravel-mixの導入完了しました。
npm install --no-bin-links
ビルドする
npm run dev
エラーを吐かれました。
> @ dev /src/example
> npm run development
> @ development /src/example
> cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js
events.js:173
throw er; // Unhandled 'error' event
^
Error: spawn node_modules/webpack/bin/webpack.js ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:248:19)
at onErrorNT (internal/child_process.js:431:16)
at processTicksAndRejections (internal/process/task_queues.js:83:17)
at process.runNextTicks [as _tickCallback] (internal/process/task_queues.js:58:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:828:11)
at internal/main/run_main_module.js:17:11
Emitted 'error' event at:
at Process.ChildProcess._handle.onexit (internal/child_process.js:254:12)
at onErrorNT (internal/child_process.js:431:16)
[... lines matching original stack trace ...]
at internal/main/run_main_module.js:17:11
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ development: `cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ development script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2019-04-28T10_40_32_876Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ dev: `npm run development`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ dev script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR! /root/.npm/_logs/2019-04-28T10_40_32_919Z-debug.log
Laravelのプロジェクトルートにあるpackage.jsonを修正しました。
"scripts": {
"dev": "npm run development",
"development": "cross-env NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "cross-env NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
以下の部分を
cross-env
↓
node node_modules/cross-env/dist/bin/cross-env.js
上記のように書き換えます。
以下のようになるはずです。
"scripts": {
"dev": "npm run development",
"development": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack/bin/webpack.js --progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js",
"watch": "npm run development -- --watch",
"watch-poll": "npm run watch -- --watch-poll",
"hot": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=development node_modules/webpack-dev-server/bin/webpack-dev-server.js --inline --hot --config=node_modules/laravel-mix/setup/webpack.config.js",
"prod": "npm run production",
"production": "node node_modules/cross-env/dist/bin/cross-env.js NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
再度、コマンドを叩くと上手くいきました。
npm run dev
もしかしたら、cross-envがインストールされていない場合もあるので、以下も試してみてください。
npm install --save-dev cross-env
DockerやVagrantを使っていて上手くできなかったらこれです。
npm install --save-dev cross-env --no-bin-links
以上です。(´▽`)(´▽`)(´▽`)
↓ Maybe NOT correct way, just a MEMO ↓
↓ 説不定不對的辦法,就是筆記而已 ↓
以下はたぶん正しくないですが、これで上手くいったこともあったので、メモしておきます。
関連ファイルを削除してやり直しました。
rm -rf node_modules
rm package-lock.json yarn.lock
npm cache clear --force
npm install --no-bin-links
npm run dev
調べるとコードエディタなどを開いていると上手くいかないと言う方がいたので、VSCodeを閉じて、 npmを更新し、再度インストールしました。
npm update
npm install --no-bin-links
npm run dev
Share this post
Twitter
Google+
Facebook
Email