Next.jsフレームワークで、AWSのDynamoDBからデータを取ってくるときに
Error: No credentialsat InternalGraphQLAPIClass.evalというエラーに躓いてしまったので
その解決備忘録。
原因は多岐にわたるので
エラー原因の1つとして見てもらえれば幸いです。
自分の場合
結論から言うと
_app.jsファイルでimport “../configureAmplify”
を書くことを忘れていた。
ということでした。
自分のNext.jsのフォルダ構成は下記のような感じです。
この中でconfigureAmplify.jsファイルと_app.jsで
AWS Amplifyを使用してGraphQL APIにアクセスしようとした際に、適切な認証情報をするらしいです。
import {Amplify} from "aws-amplify"
import config from "/src/aws-exports.js"
Amplify.configure(config)
import "../configureAmplify"
export default function App({ Component, pageProps }) {
return <Component {...pageProps} />
}
自分の場合はconfigureAmplify.jsは書いていたのですが
_app.jsでimport “../configureAmplify”って書いてなかったエラーがありました。
一般的な解決方法
今回自分では関係なかったのですが
一般的には下記のような手順をとるようでした。
1. Amplifyの設定を確認
まずはプロジェクトでaws-exports.jsが生成されていることを確認。
このファイルは、Amplify CLIを使用してプロジェクトを初期化(amplify init)し、認証(amplify add auth)を追加した後に生成されるファイルです。
プロジェクトのルートでamplify pushを実行して、クラウドに設定をプッシュし、最新の設定を適用していることを確認してください。
ということで
1.amplify init
2. amplify add auth
3. amplify push
の順で実行してみるらしい。
実際やってみたのですが、私の原因はこれじゃなかった。
2. Amplifyパッケージのバージョンを確認
プロジェクトにインストールされているAmplify関連パッケージのバージョンが互いに互換性があることを確認してください。(難しい)
バージョン確認しながらnpm installを行います。
おわりに
今回は、Next.jsフレームワークとAWS DynamoDBを組み合わせた開発において直面した認証エラーの解決策を共有する記事を書かせていただきました。
開発の過程で遭遇するさまざまな障害は、しばしば我々の技術的理解を深めてくれますが
今回のエラーは、プロジェクトにおける細部への注意の重要性を再認識させられるものでした。
この記事が、同じ問題に直面する他の開発者の方々への一助となれば幸いです。