# nodejs 使う時のエラーたち
# nodejs バージョンアップしたら、npm run prod 時が node-sass エラー
[webmaster@www.net]$ npm run prod
> @ prod /home/webmaster/public_html/www.net
> npm run production
> @ production /home/webmaster/public_html/www.net
> cross-env NODE_ENV=production node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js
/home/webmaster/public_html/www.net/node_modules/webpack-cli/bin/cli.js:93
throw err;
^
Error: Missing binding /home/webmaster/public_html/www.net/node_modules/node-sass/vendor/linux-x64-72/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 12.x
Found bindings for the following environments:
- Linux 64-bit with Node.js 10.x
This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to download the binding for your current environment.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ 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`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ production script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/webmaster/.npm/_logs/xxxxxx_964Z-debug.log
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @ prod: `npm run production`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @ prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/webmaster/.npm/_logs/2020-01-16T07_12_05_981Z-debug.log
Laravel npm run prod コマンド実行する時に下記エラー発生
Error: Missing binding /home/webmaster/public_html/www.net/node_modules/node-sass/vendor/linux-x64-72/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 12.x
# node-sass エラーの解決方法
エラー原因
npm installを実行してから環境が変わって再度npm install実行した時に発生します。
解決方法は 21 行目あたりに書いてありますが、npm rebuild で問題解決、npm rebuild node-sassを実行して現在の環境のバインディングをダウンロードしてリビルドします。
npm rebuild node-sass
気になるところですが、エラーメッセージに答え書くなら 自動で修正しないかい?!
# npm ビルドの時にメモり不足で中断エラー
メモりリミットエラーみたいの感じで言ってます
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory
# メモり不足エラーの解決方法
エラー原因
v8 で npm install したらメモりオーバーする可能性のエラー
解決方法はNODE_OPTIONS=--max_old_space_size=2048オプションをつけてメモりサイズ指定すること
laravel config 設定が下記
"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_OPTIONS=--max_old_space_size=2048 node_modules/webpack/bin/webpack.js --no-progress --hide-modules --config=node_modules/laravel-mix/setup/webpack.config.js"
},
# WARN fsevents@1.2.9
よく見かけるけど、いつも無視してませんか?
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules/fsevents):
って何のワーニングでしょうか?
答えはたくさんありますが、
これをエラーと思ってるなら勘違いです。
WARN って書いてあるとおり警告です。
警告はエラーではありません。(ここ見てると何故が警告をエラーと思う人が多い…)ここに書いてますが、fsevents は MacOS のネイティブ API を使うためのライブラリ(つまり今使おうとしているライブラリを MacOS 上で使う時に必要になるもの)なので、Windows 環境なら無視して良いはずです。
参考:Unsupported platform for fsevents@2.0.7、(2)nodist(x64)をインストールしたい、を解決したい (opens new window)