NuxtアプリをGAEにデプロイする(Node.js 10)
GAEへの自動デプロイ
下記記事を参考にさせていただいた。
Node.js version 10が使えるようになっていたので[[runtime: nodejs10]]に変更。
# app.yaml
runtime: nodejs10
env: standard
デプロイの際にいくつかエラーが出てハマったので対応内容をまとめておく。
遭遇したエラーたち
ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: This deployment has too many files. New versions are limited to 10000 files for this app.
CircleCIでGAEにデプロイする際に発生。
アップロード対象ファイルが多すぎて制限に引っかかった。
そもそもデプロイに必要なファイルはビルド後のファイル(.nuxt以下)のみでいいので、余計なファイルをデプロイ対象から外すことに。
app.yamlにskip_filesを追記する方法だとエラーになり、[[.gcloudignore]]を使えとのことだったので以下を追加。
# .gcloudignore
.git
.gitignore
node_modules/
src/
Nuxt Fatal Error Error: Cannot find module 'typescript'
CIでデプロイができるようになった後、アプリのURLにアクセスすると「Error: Server Error」と表示され、500エラーになってしまった。
これだけだと原因が分からないので、ログビューア(GCPメニューの「Logging」 => 「ログビューア」から確認できる)でログを確認してみるとNuxt Fatal Error Error: Cannot find module 'typescript'というエラーが起きていた。
package.jsonの@nuxt/typescriptライブラリがdevDependenciesに含まれてしまっていたので、dependenciesに移動した。
同様に[[nuxt.config.ts]]のmodulesにあるライブラリをdependenciesに移動。
// package.json
{
"dependencies": {
"@nuxt/typescript": "^2.8.1"
},
"devDependencies": {
}
}
Nuxt Fatal Error Error: No build files found in /srv/.nuxt/dist/server.
gcloudignoreのドキュメントに.gitignoreの設定を読み込むことができるとあったので、最初は下記のように書いていた。
# .gcloudignore
.git
.gitignore
#!include:.gitignore
.gitignoreの中には.nuxtが含まれていたため、No build files foundエラーが発生。
include記述を止めてデプロイ対象外にするファイルを指定するようにした。
# .gcloudignore
.git
.gitignore
node_modules/
src/
これでGAE上でNuxtアプリが動くようになった。
何か問題があったらまずログビューアでログを確認するようにするのが大事。