ローカルでは動くけどデプロイすると動かない事象でハマったのでメモ。
ハマった事象
- Expressで作ったWebアプリ
- ローカルでは動く
- デプロイするとページ表示時にエラーが出る
⇒ You do not have permission to view this directory or page.
⇒ 日本語訳すれば見たことあるはず。
IISでWebアプリを立て、ブラウザでフォルダを
表示しようとした時のアレ。
(既定のドキュメントに当てはまるものが無いとかで)
⇒ と、いうことは、ルーティングが効いてない?
結局、以下が複合していて事象解決に時間がかかった。
- Web.configファイルが必要だったが、色々やっているうちに無くなっていた。
- Node.jsのバージョン指定を行っていたが、Azure Web Appで対応していないバージョンだったためにデプロイがエラーになっていた。
デプロイ時のポイント
- 最低限、必要なファイルは以下。
- エントリポイントとなるjsファイル(名前は任意)
- package.jsonファイル
- 上記jsファイルをmainに指定
- "engines" : { "node":"8.11.1" } のようにバージョンを指定
- Web.config
- 今ひとつ最低限の構成が分からないので自動生成されるものを変更しない作戦が良い
- 但しルートフォルダにserver.jsかapp.jsが無いと自動作成されないのでエントリポイントはこのファイル名にするのが良い
- デプロイ手順は以下。
- 任意の方法でデプロイ (zip とか git とか色々ある)
- Azure管理ポータル > デプロイ対象のリソース > デプロイセンター で、デプロイがエラーになっていないか確認
- https://{Webアプリ名}.scm.azurewebsites.net/ZipDeployUI でWeb.configの存在を確認