雪ん子パースペクティヴ

読むとちょっとタメになるエントリー。コメントあると嬉しいです。

【Azure Static Web Apps】Next.jsは動的にも静的にもWebサイトを作れるが、Azure SWAは静的に限られるので注意

きちんと考えて開発しないと、簡単なところでハマる。

 

はろー、yukiです。

 

Next.jsで開発したWebアプリをAzure Static Web Appsにデプロイします。

デプロイにはGithub Actionsを使い、CI/CDも行います。

そんな中、下記のエラーが発生しました。

Finished building function app with Oryx
Zipping Api Artifacts
Done Zipping Api Artifacts
Zipping App Artifacts
Done Zipping App Artifacts
Uploading build artifacts.
Finished Upload. Polling on deployment.
Status: InProgress. Time: 0.2525249(s)
Status: InProgress. Time: 15.8519271(s)
Status: InProgress. Time: 31.1154934(s)

略

Status: InProgress. Time: 572.1004748(s)
Status: InProgress. Time: 587.3711448(s)
Upload Timed Out. Unsure if deployment was successful or not.

 

ビルドまでは完了していますが、タイムアウトでデプロイに成功していない様子。

これに関して調べてみると、同じ悩みを持った方々もいましたが、いまいち解決していないようでした。

Upload Timed Out. Unsure if deployment was successful or not. · Issue #1396 · Azure/static-web-apps · GitHub

https://learn.microsoft.com/en-us/answers/questions/2277626/deployment-timeout-issue-with-new-azure-static-web

 

上記と同じ原因かは分かりませんが、僕の場合は単純なミス。

Next.jsでは、動的なWebサイトを開発できます。

動的な処理は様々にありますが、例えば、sitemapを動的にしていないでしょうか?

 

ということで、sitemap.tsでサイトマップを動的に作成している方は、下記を追記します。

export const dynamic = 'force-static';

 

これでサイトマップの作成は、静的になります。

dynamicオプションについて、公式は下記です。

 

 

あと、 async と await を使っていないでしょうか?

これらも動的なWebサイトに使うものなので、Azure SWAではエラーが発生します。

 

それでも動的なWebサイトで進めたい方は、Azure Functionsを使用することになります。

 

フロントエンドとバックエンドで分けて開発するのは、管理コストの面から、僕は避けました。

 

 

以上

 

 

 

 

Googleアドセンス