Closed3

NextjsでのMonorepoでは、next-transpile-modules でのトランスパイルが必要

HaruHaru

別モジュールを参照する際に、package.jsonにローカルモジュールへの依存関係を記すだけだと、ビルド時にエラーとなる

// package.json
{
  "dependencies": {
    "my-ui": "*"
  }
}

エラー内容。今回だとTypeScriptファイルのロードに失敗していた。(as const などの記法)

Module parse failed: Unexpected token (4:17)
moet:dev: You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
HaruHaru

とはいえ、TypeScriptファイルのローダーはNextjsではデフォルトで設定されている。

ただ上記エラーを読むと、ローカルモジュールの読み込み時にその設定が適用されていないことがわかる。TypeScriptファイルのローダーもだし、他にはホットリロードの設定などもある。

下記 next-transpile-modules を使用することにより、
Next.jsのBabel設定から、ローカルモジュールをトランスパイルする。

https://github.com/martpie/next-transpile-modules#readme

const withTM = require("next-transpile-modules")(["my-ui"]);

module.exports = withTM({
  reactStrictMode: true,
});

stackoverflowにも同様の投稿はあった。

https://stackoverflow.com/questions/70923887/turborepo-library-consuming-another-library-you-may-need-an-appropriate-load

このスクラップは2023/01/23にクローズされました