久しぶりにGoogle App Engine(GAE)を触る。見慣れないエラーが出る。JavaScriptファイルがMIME Typeが違うから読み込まないよ、とか言われる。ローカルでテストのためにGAEのHTTPサーバーを立てて動かそうとした時の話だ。localhost:8080を叩いてみると。
Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “text/plain”. Strict MIME type checking is enforced for module scripts per HTML spec.
最初はHTTPS通信になってないからかと思って探すと「secure: always」つければいいとあった。しかし、これではなかった模様。さらに探すと「mime_type:」で、明示的に指定すればいいともあった。やってみるとうまくいかない。
結局、正規表現でjsファイルの場所(?)を指定する方法が間違ってた模様。以下が参考になった。
After upgrading to Angular8, AppEngine is serving scripts with the incorrect mime-type
というわけで、app.yamlファイルにこんな感じのを加えたら意図したように動いた 。
– url: /(.+.js)
static_files: public_html/\1
upload: public_html/(.+.js)
mime_type: text/javascript
secure: always
GAEのバージョンもおそらく古いまま(2019年ころ?)なので、バージョンアップしたら別かもしれない。他の不具合が出たらあれなので、今回はこのままで放っておこうと思う。
Web MIDI APIを使ったウェブアプリなのだけど、ブラウザの進化にいろいろ追いつけていないところがある(2020年以前に作ったやつがけっこう動かなくなっている)。時間もあまりとれないので、ゆっくり対応していきたい。
その後いろいろやって。デプロイできねー。こんなエラー。
Permissions error fetching application [apps/xxxx]. Please make sure you are using the correct project ID and that you have permission to view applications on the project.
こんなのがあった。
この問題を解決するには、アプリのデプロイに使用したサービス アカウントに App Engine デプロイ担当者のロールが付与されていることを確認します。付与されていない場合は、このロールを付与します。デプロイに使用したアカウントを確認するには、次のいずれかを行います。
App Engine のエラーをトラブルシューティングする
権限の問題っぽいがロールを追加とかしても変わらず。とりあえずあきらめる。
あと、関係ないけどメモ。あれの赤外線レシーバーはTSOP38238っぽい。
さらに続き。課金関連で変わってる模様。
Google App Engine(GAE)を無料枠で収めるための勘所
知らなかった。
アプリをデプロイするには、課金を有効にする必要があります。無料の割り当て範囲内である場合は、アカウントには課金されません。無料の割り当てを越えるリソースがアプリケーションに必要な場合には、追加の使用分について課金されます。
Google Cloud プロジェクト、App Engine アプリケーション、課金の管理
ですってよ。あらら。
そんなこんなで、Google CloudコンソールからGoogle App Engine開くと請求先の登録が必要と言われ、請求先(クレカ番号など)を登録したら、デプロイできるようになった。なるほど。ひとまず解決。
コメント