0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

DockerでTypeScript環境を構築する際に遭遇したエラーと対処法

Posted at

DockerでTypeScript環境を構築する際に遭遇したエラーと対処法

こんにちは!今回はDockerでTypeScript環境を構築しようとした際に発生したエラーと、その解決方法について備忘録として残しておきます。

発生したエラー

Docker環境でNext.jsをセットアップしようとしたところ、以下のエラーに遭遇しました。

An error occurred in next/font.

Error: Cannot find module '@tailwindcss/oxide-linux-x64-gnu'
Require stack:
- /app/node_modules/@tailwindcss/oxide/index.js
- /app/node_modules/@tailwindcss/postcss/dist/index.js
...

見た感じ、@tailwindcss/oxide-linux-x64-gnu が見つからないとのこと。最初は「依存関係の問題かな?」と思いましたが、いろいろ調べて試行錯誤した結果、原因がわかりました。

エラーの原因

このエラーの原因は大きく分けて2つ。

  1. Dockerのボリューム設定によって node_modules が適切に管理されていない。
  2. optionalDependencies に必要なモジュールが含まれておらず、自動インストールされない。

特に、Docker環境では node_modules の扱いがローカルと異なるため、思わぬトラブルに繋がりやすいですね。

解決方法

1. Dockerのボリューム設定を見直す

docker-compose.ymlDockerfilenode_modules をボリュームとして指定している場合、これが問題になっている可能性があります。ボリューム設定を削除すると解決する場合があります。

修正前(問題のある設定)

docker-compose.yml
volumes:
  - .:/app
  - /app/node_modules  # これを削除!

この /app/node_modules のボリューム指定を削除すると、エラーが解消されることが多いです。

2. package.jsonoptionalDependencies を追加

package.json に以下を追加することで、@tailwindcss/oxide-linux-x64-gnulightningcss-linux-x64-gnu が自動的にインストールされるようになります。

修正後(package.json の追記)

"optionalDependencies": {
  "@tailwindcss/oxide-linux-x64-gnu": "^4",
  "lightningcss-linux-x64-gnu": "^1"
}

これで問題なく動作するはず!

まとめ

DockerでNext.js環境を構築するときに @tailwindcss/oxide-linux-x64-gnu のエラーに遭遇したら、以下の点を確認。

volumes/app/node_modules を指定していないか?(削除する)
package.jsonoptionalDependencies@tailwindcss/oxide-linux-x64-gnulightningcss-linux-x64-gnu を追加したか?

今回のエラーでハマった方の参考になれば幸いです!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?