Skip to content

Node Sassのバージョン互換性エラーと解決策

問題の概要

Node.js v16.13.1 と React アプリケーションで Sass を使用しようとした際に、以下のエラーが発生する問題があります:

Node Sass version 7.0.0 is incompatible with ^4.0.0 || ^5.0.0 || ^6.0.0

このエラーは、使用している Node Sass のバージョン(7.0.0)が、プロジェクトで要求されている互換バージョン(4.x、5.x、6.x)と一致しないことを示しています。

根本原因

この問題の主な原因は以下のいずれかです:

  1. Node Sass の非推奨化: node-sass パッケージは現在非推奨となっており、メンテナンスモードに入っています
  2. Node.js バージョンとの互換性: 新しいバージョンの Node.js と古い node-sass バージョンの間での互換性問題
  3. sass-loader の問題: 古いバージョンの sass-loader が新しい node-sass と互換性がない場合

推奨解決策: sass への移行

重要

node-sass は非推奨パッケージです。新しいプロジェクトでは sass(Dart Sass)を使用することを強く推奨します。

npm を使用している場合

bash
# node-sass のアンインストール
npm uninstall node-sass

# sass のインストール
npm install -D sass

Yarn を使用している場合

bash
# node-sass の削除
yarn remove node-sass

# sass の追加
yarn add -D sass

この変更後、.scss および .sass ファイルは引き続き正常にコンパイルされますが、node-sass の代わりに sass パッケージが使用されます。

代替解決策: node-sass の継続使用

どうしても node-sass を使い続ける必要がある場合は、Node.js のバージョンに互換性のある node-sass バージョンをインストールしてください。

Node.js バージョンと互換性のある node-sass バージョン

Node.js バージョン推奨 node-sass バージョン
Node.js 16node-sass@6.0+
Node.js 15node-sass@5.0+
Node.js 14node-sass@4.14+
Node.js 12node-sass@4.12+

特定バージョンのインストール

bash
# Node.js 16 の場合
npm install node-sass@6.0

# Node.js 14 の場合
npm install node-sass@4.14.1

その他のトラブルシューティング

sass-loader の問題を解決する

node-sasssass に置き換えても問題が解決しない場合、sass-loader に問題がある可能性があります:

bash
# sass-loader の再インストール
npm uninstall sass-loader
npm install sass-loader

package.json のエイリアス設定

既存のコードベースで node-sass への参照を維持する必要がある場合は、package.json でエイリアスを設定できます:

json
{
  "dependencies": {
    "node-sass": "npm:sass@^1.49.9"
  }
}

ロックファイルの再生成

Yarn を使用している場合、ロックファイルが原因で問題が発生することがあります:

bash
# yarn.lock を削除して再生成
rm yarn.lock
yarn install

詳細なデバッグ手順

  1. 現在のバージョンの確認:

    bash
    node --version
    npx node-sass --version
  2. プロジェクト内の node-sass 参照の検索:

    bash
    find . -name 'package.json' -exec grep -l "node-sass" {} \;
  3. 互換性の問題がある依存関係の確認:

    bash
    npm ls node-sass
    npm ls sass-loader

まとめ

Node Sass version 7.0.0 is incompatible エラーに対する最良の解決策は、非推奨の node-sass から現代的な sass パッケージに移行することです。これにより、将来の Node.js バージョンでも互換性が維持され、パフォーマンスの向上や新機能の利用が可能になります。

どうしても node-sass を使用し続ける必要がある場合は、使用している Node.js バージョンと互換性のある node-sass バージョンを選択し、必要な場合は sass-loader も更新してください。

情報

Sass の公式ドキュメントでは、すべての新しいプロジェクトで Dart Sass(sass パッケージ)を使用することを推奨しています。これは積極的にメンテナンスされており、最新の機能と最適なパフォーマンスを提供します。