GAEでMIME Typeが違うと言われる

Web MIDI API

 久しぶりに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)を無料枠で収めるための勘所

 個人開発したアプリをGCP(GAE)にデプロイするまで

 知らなかった。

 アプリをデプロイするには、課金を有効にする必要があります。無料の割り当て範囲内である場合は、アカウントには課金されません。無料の割り当てを越えるリソースがアプリケーションに必要な場合には、追加の使用分について課金されます。

 Google Cloud プロジェクト、App Engine アプリケーション、課金の管理

 ですってよ。あらら。

 そんなこんなで、Google CloudコンソールからGoogle App Engine開くと請求先の登録が必要と言われ、請求先(クレカ番号など)を登録したら、デプロイできるようになった。なるほど。ひとまず解決。

コメント

タイトルとURLをコピーしました