Skip to content

tailwindcss非同期プラグインエラーの解決

md
## 問題の概要
React NativeプロジェクトでNativewindを使用中に以下のエラーが発生する場合があります:

screens/HomeScreen.js: Use process(css).then(cb) to work with async plugins


このエラーは通常、次のようなシンプルなコンポーネントで発生します:

```jsx
import { View, Text } from 'react-native'
import React from 'react'

export default function HomeScreen() {
  return (
    <View>
      <Text className="text-red">HomeScreen</Text>
    </View>
  )
}

発生条件

このエラーが発生する主な環境:

  • React Native + Nativewindの組み合わせ
  • Tailwind CSSバージョン3.3.3以上を使用
  • Expo SDK 49以上での開発環境

根本原因

エラーの主な原因はTailwind CSSバージョンとNativewindの互換性問題です。NativewindがTailwind CSSの非同期プラグイン処理を適切にハンドリングできないため、特にバージョン3.3.3以上で発生します。

効果的な解決策

最適な解決方法:Tailwind CSSのバージグレード

最も確実な解決方法はTailwind CSSをバージョン3.3.2に固定することです:

bash
npm install tailwindcss@3.3.2 --save-dev
bash
yarn add tailwindcss@3.3.2 --dev
bash
bun add tailwindcss@3.3.2 --dev

package.jsonの修正

依存関係を確実に固定するには、package.jsonを直接編集します:

json
{
  "devDependencies": {
    // キャレット(^)を削除してバージョン固定
    "tailwindcss": "3.3.2", 
    // その他の依存関係...
  }
}

完全な再インストール手順

上記で解決しない場合、以下の完全な手順を実行してください:

bash
# 既存パッケージの削除
npm uninstall nativewind tailwindcss

# 必要パッケージの再インストール
npm install --save-dev tailwindcss@3.3.2
npm install nativewind

# キャッシュクリア(Expo使用時)
npx expo start -c

その他の注意点

postcssのバージョン指定

環境によってはpostcssのバージョンも調整が必要です:

bash
npm install postcss@8.4.23

フォントファイル名の大文字問題(iOS特有)

一部の環境ではフォントファイル名の大文字/小文字が影響します:

# 変更前
ZenLoop-Regular.ttf → # 変更後
Zenloop-Regular.ttf

Firebaseとの互換性問題

Firebaseを使用している場合、Tailwind CSS以外の互換性問題が発生することがあります:

json
"firebase": "9.22.2" // 安定バージョンを指定

回避すべき誤った対処法

以下の方法は効果がなく、むしろ問題を悪化させる可能性があります:

js
// async/awaitを強制的に使おうとする方法
process(css).then(() => {
  ReactDOM.render(...);
});

このコードはReact Native環境では機能せず、Nativewindの設計思想にも反します。

公式情報とアップデート

Nativewindチームはこの問題を公式に認識しており、GitHub Issueで追跡中です:

Nativewind Issue #498: Compatibility with Tailwind CSS v3.3.3+

将来的にNativewindが新しいTailwindバージョンに対応した場合は、公式ドキュメントでアップデート情報が公開される予定です。

まとめ

Use process(css).then(cb) to work with async pluginsエラーの根本的な解決には:

  1. Tailwind CSSをバージョン3.3.2に固定
  2. パッケージマネージャーでのキャレット(^)の削除
  3. 必要に応じてpostcssバージョンの調整

これらの手順で、NativewindをReact Nativeプロジェクトで問題なく使用できるようになります。新しいバージョン対応については、Nativewindの公式リリースノートを定期的に確認しましょう。