以下の内容はhttps://hepokon365.hatenablog.com/entry/2024/07/30/210000より取得しました。


Amplify Gen2でブランチ環境のデプロイ時に「Cannot find module '$amplify/env/...」が発生する

Amplify Gen2 + Next.js v14で作成したアプリケーションにて、Lambda関数内にて環境変数を参照するため、 import { env } from '$amplify/env/<関数名>' を記述したところ、ブランチ環境のデプロイ時にエラーが発生するようになった。

対応方法を調べたのでメモ。

環境

Node.js 20.10.0, Next.js 14.2.4。

Amplify関連は、aws-amplify 6.3.6, @aws-amplify/backend 1.0.4, @aws-amplify/backend-cli 1.2.1。

問題

カスタム認証の実装のため、 amplify/data/customAuthorizer.ts を作成し、その中でDynamoDBを参照するため、以下の手順で import { env } from '$amplify/env/customAuthorizer' を記述した。

docs.amplify.aws

サンドボックス環境での動作確認ができたため、ブランチ環境での確認のためデプロイしようとすると、以下のエラーでビルドに失敗した。

[WARNING]: ./amplify/data/customAuthorizer.ts:16:21
Type error: Cannot find module '$amplify/env/customAuthorizer' or its corresponding type declarations. 

自動生成されたファイルがコンパイル対象になっている模様。

対応

エラーメッセージでissueを検索すると、以下を発見。

github.com

その中から、 #1374 がリンクされており、以下のコメントにて対応方法が記載されていた。

github.com

tsconfig.json"exclude"".amplify", "./amplify" を追加すればいいとのこと。

該当部分は create-next-app 後のデフォルトの "exclude": ["node_modules"] だったため、 "exclude": ["node_modules", ".amplify", "./amplify"] に変更。

その状態でブランチ環境の再デプロイを行うと、ビルドに成功した。

振り返り

Amplify Gen2、まだまだGA直後のため、ところどころ不具合が残っている印象。

ただ、ほとんど他の誰かが通った道なので、issueを検索すれば対応方法がわかることが多いのが救いか。




以上の内容はhttps://hepokon365.hatenablog.com/entry/2024/07/30/210000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14