Closed3
Next.js(App Router)で@aws-sdkを使っていたらビルド時にCannot get final name for export 'NO_RETRY_INCREMENT'のエラーが出る
Next.jsで@aws-sdk/client-s3等を使ってファイルアップロードの機能を実装した後にnext buildをしたらエラーが発生していることに気づいた。
./node_modules/@aws-sdk/middleware-sdk-s3/dist-es/s3-express/functions/s3ExpressHttpSigningMiddleware.js + 43 modules
Cannot get final name for export 'NO_RETRY_INCREMENT' of ./node_modules/@smithy/util-retry/dist-es/index.js
私のpackage.jsonで関係しそうライブラリは下記と思われる。
"@aws-sdk/client-s3": "^3.658.1",
"@aws-sdk/s3-request-presigner": "^3.658.1",
"next": "14.2.5",
色々と調べるととりあえず下記を指定したらビルドが成功した。
const nextConfig = {
experimental: {
serverComponentsExternalPackages: ['@aws-sdk'],
},
}
そもそもserverComponentsExternalPackages
ってなんだろう?
下記のドキュメントを見る。
Server Components のバンドルから特定の依存関係を除外し、ネイティブな Node.js の require を使用してください。
「ネイティブな Node.js の require を使用してください。」の部分がいまいち分かっていないが、今回でいうとバンドルする時にNode.js側で使う@aws-sdk
をbundleするときの依存関係から除外をしているって感じなのかな?
なお、今までserverComponentsExternalPackages
という名前だったものが、v15からはserverExternalPackages
になる様子
Moved from experimental to stable. Renamed from serverComponentsExternalPackages to serverExternalPackages
意訳:v15.0.0 experimental から stable に移動。serverComponentsExternalPackages から serverExternalPackages に名称変更。
このスクラップは2ヶ月前にクローズされました