Node Sass Windows 64-bit ランタイムエラーの解決方法
問題の概要
Node.js環境でgulp-sass
を使用する際、以下のエラーが発生することがあります:
Error: Node Sass does not yet support your current environment: Windows 64-bit with Unsupported runtime (88)
このエラーは、Node Sassが現在のNode.jsバージョンに対応していない場合に発生します。特に、Node.jsの新しいバージョン(例:v15以上)では、Node Sassがバイナリファイルを提供していないため、この問題が頻発します。
根本的な原因
Node Sass(node-sass)はLibSassのNode.jsバインディングですが、以下の理由で問題が発生します:
- 非推奨パッケージ: Node Sassは現在非推奨となっており、新しいNode.jsバージョンへの対応が遅れるか、まったく対応されません
- バイナリ互換性: Node Sassはネイティブバイナリを必要とし、Node.jsのメジャーバージョンアップごとに再コンパイルが必要です
- 事前コンパイル済みバイナリの不足: 新しいNode.jsバージョン用のバイナリがGitHubリリースに存在しない場合、ビルドエラーが発生します
重要
Node Sassプロジェクトは2020年10月に非推奨となり、メンテナンスモードに入っています。新規プロジェクトでは使用を避けることを推奨します。
解決方法
方法1: Dart Sassへの移行(推奨)
最も効果的で将来性のある解決策は、Node SassからDart Sassへの移行です:
# Node Sassをアンインストール
npm uninstall node-sass
# Dart Sassをインストール
npm install sass --save-dev
gulpを使用している場合:
# gulp-sassの代わりにgulp-dart-sassをインストール
npm uninstall gulp-sass
npm install gulp-dart-sass --save-dev
コード内のインポート文を変更:
// 変更前
const sass = require('gulp-sass');
// 変更後(gulp-dart-sass使用時)
const sass = require('gulp-dart-sass');
メリット
- Dart Sassは純JavaScript実装のため、ネイティブバイナリ不要
- 最新のSass機能をサポート
- アクティブにメンテナンスされている
- すべてのNode.jsバージョンに対応
方法2: Node.jsバージョンのダウングレード
既存プロジェクトの大幅な変更が難しい場合、Node.jsのバージョンを下げる方法があります:
- nvm(Node Version Manager)のインストール:
# Windowsの場合
choco install nvm
# macOS/Linuxの場合
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- 互換性のあるNode.jsバージョンのインストールと使用:
# LTSバージョンをインストール
nvm install 14.15.0
# 特定バージョンを使用
nvm use 14.15.0
- プロジェクトのpackage.jsonにエンジン設定を追加:
{
"engines": {
"node": "14.x"
}
}
方法3: Node Sassの互換バージョンをインストール
特定のNode SassバージョンとNode.jsバージョンの互換性:
Node.js バージョン | 互換性のある Node Sass バージョン |
---|---|
Node 14 | node-sass@4.14+ |
Node 13 | node-sass@4.13+ |
Node 12 | node-sass@4.12+ |
Node 11 | node-sass@4.10+ |
互換バージョンのインストール:
npm uninstall node-sass
npm install node-sass@4.14.1 --save-dev
トラブルシューティング
キャッシュクリアと再インストール
既存の問題を解決するには:
# キャッシュクリア
npm cache clean --force
# node_modulesとpackage-lock.jsonを削除
rm -rf node_modules package-lock.json
# 再インストール
npm install
# 必要に応じて監査修正
npm audit fix
Python関連エラーの解決
Node SassのビルドにPythonが必要な場合:
# WindowsでPythonをインストール
choco install python --version=2.7.18
# またはPythonランチャーを設定
npm config set python python2.7
マイグレーションガイド
Node SassからDart Sassへの移行
ほとんどの場合、直接置き換えが可能ですが、以下の点に注意してください:
- 構文の互換性: Dart Sassはより厳格な構文チェックを行う場合があります
- インポートパス:
@import
ルールの解決方法が異なる可能性があります - 拡張機能: カスタム関数やインポーターがある場合、調整が必要な場合があります
Expressプロジェクトでの移行例
// 変更前(Node Sass Middleware)
const nodeSassMiddleware = require('node-sass-middleware');
// 変更後(Sass Middleware)
const sassMiddleware = require('sass-middleware');
app.use(sassMiddleware({
src: path.join(__dirname, 'sass'),
dest: path.join(__dirname, 'public/stylesheets'),
debug: true,
outputStyle: 'compressed'
}));
まとめ
Node Sassの環境非対応エラーに対する最適な解決策は:
- 新規プロジェクト: 最初からDart Sass(
sass
パッケージ)を使用する - 既存プロジェクト: Node SassからDart Sassに移行する
- 一時的な解決策: Node.jsバージョンを互換性のあるLTSバージョンにダウングレードする
将来性の考慮
Dart SassはSass言語のリファレンス実装であり、長期的なサポートと最新機能の追加が保証されています。新規プロジェクトでは必ずDart Sassを選択してください。