Skip to content

原文(日本語に翻訳)

深くネストされたディレクトリパスでの ENAMETOOLONG エラーを修正

原文(英語)

Fixed ENAMETOOLONG errors for deeply-nested directory paths

概要

深くネストされたディレクトリ構造を持つプロジェクトで Claude Code を使用する際に発生していた ENAMETOOLONG(ファイル名が長すぎる)エラーが修正されました。このエラーは、ディレクトリのパスが OS のファイル名最大長制限を超えた際に発生するもので、特に深いネスト構造を持つ Node.js の node_modules、Java のパッケージ構造、モノレポなどで問題になっていました。2.1.44 ではこの制限を適切に処理するようになります。

基本的な使い方

この修正はバグフィックスです。Claude Code を 2.1.44 以上にアップデートするだけで適用されます。

bash
# Claude Code をアップデート
npm update -g @anthropic-ai/claude-code

実践例

ENAMETOOLONG が発生しやすい構造

以下のような深くネストされたディレクトリ構造で特に効果があります:

# Node.js の深いネスト(修正前はエラーが発生することがあった)
node_modules/
  package-a/
    node_modules/
      package-b/
        node_modules/
          package-c/
            ...(さらに深い)

# Java のパッケージ構造
src/
  main/
    java/
      com/
        example/
          domain/
            service/
              impl/
                ...

# モノレポの深い構造
packages/
  frontend/
    src/
      components/
        shared/
          forms/
            inputs/
              ...

深いパスでのファイル操作確認

bash
# パスの長さを確認
pwd | wc -c

# 各 OS のパス長制限
# Linux: PATH_MAX = 4096 文字
# macOS: PATH_MAX = 1024 文字
# Windows: MAX_PATH = 260 文字(デフォルト)

# macOS での制限確認
getconf PATH_MAX /

修正前後の比較

# 修正前(2.1.43 以前)
> このプロジェクトの node_modules 内の依存関係を分析してください
Error: ENAMETOOLONG: name too long, '/path/to/very/deep/nested/node_modules/.../file'

# 修正後(2.1.44 以降)
> このプロジェクトの node_modules 内の依存関係を分析してください
(正常に処理される)

注意点

  • ENAMETOOLONG エラーはディレクトリパスが OS の上限を超えた場合に発生します。Claude Code の修正は内部処理での対応です。
  • 極端に深いネスト(例:数百階層)の場合は、OS レベルの制限により引き続き問題が発生する可能性があります。
  • Windows 環境では MAX_PATH 制限(260文字)があり、こちらの制限に対してはシステム設定(長いパスの有効化)が必要な場合があります。
  • この修正は特に node_modules を含む Node.js プロジェクト、深いパッケージ構造を持つ Java プロジェクト、複数階層のモノレポで効果があります。

関連情報