経緯
Windows 開発環境上の古い Node.js のプロジェクトで、一度 Gulp を走らせる必要性に迫られたので実行したところ、以下のエラーが出てタスクが止まってしまいました。
Error: Missing binding PATH\TO\OLD-PROJECT\DIRECTORY\node_modules\node-sass\vendor\win32-x64-72\binding.node
Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 12.x
そもそもとして Node.js が 12系 というのもアレなのですがそこは今回はいったん目を瞑ります……。
詳細
詳細なログとしては以下。
Error: Missing binding PATH\TO\OLD-PROJECT\DIRECTORY\node_modules\node-sass\vendor\win32-x64-72\binding.node
Node Sass could not find a binding for your current environment: Windows 64-bit with Node.js 12.x
Found bindings for the following environments:
- Windows 64-bit with Node.js 14.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.
at module.exports (PATH\TO\OLD-PROJECT\DIRECTORY\node_modules\node-sass\lib\binding.js:15:13)
at Object.<anonymous> (PATH\TO\OLD-PROJECT\DIRECTORY\node_modules\node-sass\lib\index.js:14:35)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (PATH\TO\OLD-PROJECT\DIRECTORY\node_modules\gulp-sass\index.js:166:21)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
原因・対処
エラーログに記載はあるのですが node-sass
がプロジェクト内で使用している Node.js のバージョンに対応していないことが原因のようです。
そのため、 node-sass
をこの環境用にリビルドすればOK。コマンドも記載されています (npm rebuild node-sass
)。
> npm rebuild node-sass
古すぎるので警告は出ましたが、ひとまずこれでタスク自体は実行できるようにはなりました。
備考
なお、今回この環境を実行するために Volta も Node.js, npm, Yarn の各バージョンをこのプロジェクトのワークスペースのみ固定するように package.json
に追記しました。
{
"name": "nozarashi",
"version": "0.0.11",
// 略
"volta": {
"node": "N.N.N",
"npm": "n.n.n",
"yarn": "y.y.y"
},
"engineStrict": true
}
バージョンを合わせるための目安としたのは Node.js 公式の Previous Releases のページです。
参考
- エラーの対処法:
- Nodeのバージョンを上げたらnode-sassがエラーを吐いたのでコードリーディングしてみた | DevelopersIO
- Node.js, npm, Yarn の各バージョンの対応:
- Previous Releases | Node.js
- Volta でNode.js, npm, Yarn の各バージョンの固定:
- Volta で Node.js のバージョン管理を行うメモ #Node.js – Qiita