📌

【Next.js】< Module not found: Can't resolve 'fs' >

2023/10/25に公開

以下、元の記事です。


次のエラーに対して、再現する状況と解決方法について示します。

特にバレルエクスポート - 参考1, 参考2 - している場合に発生しやすいかと思います。

image.png

状況

  • Next.js: 13.5.6
  • Client Component にモジュールをインポートしている。
  • そのモジュールは、index.ts ファイルからエクスポートしている。
// ButtonTest.tsx
'use client' <=== Client Component Only!!!!

import { testHello } from '@/lib/testHello' <=== OK (/lib/testHello.ts)
import * as TEST from '@/lib'               <=== NG (/lib/index.ts)
import {testHello} from '@/lib'             <=== NG (/lib/index.ts)
import {testHello} from '@/lib/index'       <=== NG (/lib/index.ts)
import {testHello} from '@/lib/libs'        <=== OK (/lib/libs.ts)
import * as TEST from '@/lib/index.lib'     <=== OK (/lib/index.lib.ts)


export const ButtonTest = () => {
  return (
    <div>
      <button
        onClick={() => {
          testHello()
        }}
      >
        ButtonTest
      </button>
    </div>
  )
}

解決方法

エクスポートするファイル名をindex.ts以外にしてください。それ以外であれば、index.lib.tslib.tsなど、なんでも良いです。

補記

index.jsのパターンは試していないのですが、多分だめでしょう。

クライアントサイドにはindexファイルによるインポートを解決する仕組みがないのでしょうか?

ここで示した解決方法以外があれば教えてほしいです。

Discussion