Skip to content

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バインディングですが、以下の理由で問題が発生します:

  1. 非推奨パッケージ: Node Sassは現在非推奨となっており、新しいNode.jsバージョンへの対応が遅れるか、まったく対応されません
  2. バイナリ互換性: Node Sassはネイティブバイナリを必要とし、Node.jsのメジャーバージョンアップごとに再コンパイルが必要です
  3. 事前コンパイル済みバイナリの不足: 新しいNode.jsバージョン用のバイナリがGitHubリリースに存在しない場合、ビルドエラーが発生します

重要

Node Sassプロジェクトは2020年10月に非推奨となり、メンテナンスモードに入っています。新規プロジェクトでは使用を避けることを推奨します。

解決方法

方法1: Dart Sassへの移行(推奨)

最も効果的で将来性のある解決策は、Node SassからDart Sassへの移行です:

bash
# Node Sassをアンインストール
npm uninstall node-sass

# Dart Sassをインストール
npm install sass --save-dev

gulpを使用している場合:

bash
# gulp-sassの代わりにgulp-dart-sassをインストール
npm uninstall gulp-sass
npm install gulp-dart-sass --save-dev

コード内のインポート文を変更:

javascript
// 変更前
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のバージョンを下げる方法があります:

  1. nvm(Node Version Manager)のインストール:
bash
# Windowsの場合
choco install nvm

# macOS/Linuxの場合
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  1. 互換性のあるNode.jsバージョンのインストールと使用:
bash
# LTSバージョンをインストール
nvm install 14.15.0

# 特定バージョンを使用
nvm use 14.15.0
  1. プロジェクトのpackage.jsonにエンジン設定を追加:
json
{
  "engines": {
    "node": "14.x"
  }
}

方法3: Node Sassの互換バージョンをインストール

特定のNode SassバージョンとNode.jsバージョンの互換性:

Node.js バージョン互換性のある Node Sass バージョン
Node 14node-sass@4.14+
Node 13node-sass@4.13+
Node 12node-sass@4.12+
Node 11node-sass@4.10+

互換バージョンのインストール:

bash
npm uninstall node-sass
npm install node-sass@4.14.1 --save-dev

トラブルシューティング

キャッシュクリアと再インストール

既存の問題を解決するには:

bash
# キャッシュクリア
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が必要な場合:

bash
# WindowsでPythonをインストール
choco install python --version=2.7.18

# またはPythonランチャーを設定
npm config set python python2.7

マイグレーションガイド

Node SassからDart Sassへの移行

ほとんどの場合、直接置き換えが可能ですが、以下の点に注意してください:

  1. 構文の互換性: Dart Sassはより厳格な構文チェックを行う場合があります
  2. インポートパス: @import ルールの解決方法が異なる可能性があります
  3. 拡張機能: カスタム関数やインポーターがある場合、調整が必要な場合があります

Expressプロジェクトでの移行例

javascript
// 変更前(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の環境非対応エラーに対する最適な解決策は:

  1. 新規プロジェクト: 最初からDart Sass(sassパッケージ)を使用する
  2. 既存プロジェクト: Node SassからDart Sassに移行する
  3. 一時的な解決策: Node.jsバージョンを互換性のあるLTSバージョンにダウングレードする

将来性の考慮

Dart SassはSass言語のリファレンス実装であり、長期的なサポートと最新機能の追加が保証されています。新規プロジェクトでは必ずDart Sassを選択してください。

参考リソース