【Laravel Mix】vagrantで《spawn EACCES》なんて出た時の対処法
こんにちは
ニシザワです。
本日はvagrant環境でLaravel Mixのnpm install時に下記のようなエラーが出た場合の対処法を書いていきたいと思います。
そのため、Vagrantfileでマウントしている箇所にどの権限でマウントするかを書く必要がある。
fmodeがファイルの権限です。
上記のように書き換えて、vagrantを再起動すれば、権限が変わります。
大体は権限周りか、必要ファイルがうまく読み込まれてない場合が多いのでこちらで対処できるはずです。
ニシザワです。
本日はvagrant環境でLaravel Mixのnpm install時に下記のようなエラーが出た場合の対処法を書いていきたいと思います。
internal/child_process.js:325
throw errnoException(err, 'spawn');
^
Error: spawn EACCES
at _errnoException (util.js:1041:11)
at ChildProcess.spawn (internal/child_process.js:325:11)
at exports.spawn (child_process.js:493:9)
at Object.exports.execFile (child_process.js:208:15)
at Object.module.exports.fileCommand (/Users/ohffs/Documents/code/testeroo/node_modules/node-notifier/lib/utils.js:53:13)
at NotificationCenter.notify (/Users/ohffs/Documents/code/testeroo/node_modules/node-notifier/notifiers/notificationcenter.js:66:11)
at module.exports.WebpackNotifierPlugin.compilationDone (/Users/ohffs/Documents/code/testeroo/node_modules/webpack-notifier/index.js:62:18)
at Compiler.applyPlugins (/Users/ohffs/Documents/code/testeroo/node_modules/tapable/lib/Tapable.js:61:14)
at emitRecords.err (/Users/ohffs/Documents/code/testeroo/node_modules/webpack/lib/Compiler.js:268:11)
at Compiler.emitRecords (/Users/ohffs/Documents/code/testeroo/node_modules/webpack/lib/Compiler.js:375:38)
at emitAssets.err (/Users/ohffs/Documents/code/testeroo/node_modules/webpack/lib/Compiler.js:262:10)
at applyPluginsAsyncSeries1.err (/Users/ohffs/Documents/code/testeroo/node_modules/webpack/lib/Compiler.js:368:12)
at next (/Users/ohffs/Documents/code/testeroo/node_modules/tapable/lib/Tapable.js:218:11)
at Compiler.compiler.plugin (/Users/ohffs/Documents/code/testeroo/node_modules/webpack/lib/performance/SizeLimitsPlugin.js:99:4)
at Compiler.applyPluginsAsyncSeries1 (/Users/ohffs/Documents/code/testeroo/node_modules/tapable/lib/Tapable.js:222:13)
at Compiler.afterEmit (/Users/ohffs/Documents/code/testeroo/node_modules/webpack/lib/Compiler.js:365:9)
at require.forEach.err (/Users/ohffs/Documents/code/testeroo/node_modules/webpack/lib/Compiler.js:354:15)
at /Users/ohffs/Documents/code/testeroo/node_modules/async/dist/async.js:421:16
at iteratorCallback (/Users/ohffs/Documents/code/testeroo/node_modules/async/dist/async.js:998:13)
at /Users/ohffs/Documents/code/testeroo/node_modules/async/dist/async.js:906:16
at /Users/ohffs/Documents/code/testeroo/node_modules/graceful-fs/graceful-fs.js:43:10
at FSReqWrap.oncomplete (fs.js:135:15)
再インストールしてみる
npmのキャッシュやpackage-lockに情報が残っていると、うまく動かない場合がある。
rm -rf node_modules
rm package-lock.json yarn.lock
npm cache clear --force
npm install
権限を確認してみる
インストールした、node_moduleが実行できない権限になっている場合がある。
sudo chmod 775 -Rf node_modules/
vagrantのマウント先でnode_modulesを配置している場合は、上記のコードでは権限を変更できないです。そのため、Vagrantfileでマウントしている箇所にどの権限でマウントするかを書く必要がある。
config.vm.synced_folder "./", "/vagrant", create:true, mount_options: ['dmode=775','fmode=775']
dmodeがディレクトリの権限です。fmodeがファイルの権限です。
上記のように書き換えて、vagrantを再起動すれば、権限が変わります。
大体は権限周りか、必要ファイルがうまく読み込まれてない場合が多いのでこちらで対処できるはずです。