VisualStudio2017でNode.jsのお勉強をしようと思い、いろいろいじっています。
成果物の公開サーバーは手始めとしては無料の環境が良いと思い、Microsoft AzureのWeb Appを使っています。
んで、VisualStudio2017でプロジェクトを作るときに「基本的なAzure Node.js Express 4 アプリケーション」を選択し、AzureのWeb Appに直接公開するWebデプロイを使って公開しようとすると毎回失敗して、原因も分からず困っていたのですが、ようやく原因が分かったので記録を残しておきます。
再現方法
Microsoft AzureでWeb Appの環境を作っておきます。
環境を作る手順は以下の記事に書いています。
完全無料でMicrosft AzureのWeb AppにVisualstuioを使ってデプロイする
今回はプロジェクトを作成する時に「基本的なAzure Node.js Express 4 アプリケーション」を選びます。
Expressを使ってみたければこのプロジェクトを選ぶのが手っ取り早いと思うのが普通かと思います。
あとは作っておいたWeb Appの環境に公開するだけです。
続きは以下の記事にあるので省略します。
完全無料でMicrosft AzureのWeb AppにVisualstuioを使ってデプロイする
で、いざ公開しようと思うと…
プレビューにはファイルのリストが何にも出てきません。
試しに「発行」を実行してみても…
原因など一切分からないまま失敗します。
原因は何か!?
こんなワケの分からない状態で失敗したらこの時点でVisualStudio使うのやめたろかって思ってしまってもおかしくはないってモンです。
原因らしきモノ
空のプロジェクトで公開した時と何が違うのか差分を調べていたら、一つ問題の切り分けができました。
どうやらプロジェクトに「pug 2.0.0-rc2」というモジュールが含まれていると公開に失敗するようです。AzureのWeb Appがこのモジュールのこのバージョンに対応してないという事なのか、よくわかりませんが、このモジュールを取り除くと問題は解決します。
対策らしきモノ
pugはnode.jsのテンプレートエンジンですが、このままだと使えないという事になります。
単純な話、別のテンプレートエンジンを使うようにすれば解決します。
pugの別のバージョンを指定すれば上手くいくのかなと思いましたが、少し試した感じだとダメそうでした。
ectというテンプレートエンジンがあるそうなので試したところ、うまく公開できました。
Web Appでは使えないnpmモジュールがあるという事で、これがバグなのか仕様なのかよくわかりませんが、とにかくそういう事っぽいです。
そんなんでええんかいという感じもしますが、私のようにとりあえずいろいろ動かして遊びたい人であればさほど問題ではないでしょう。
業務で使うとなるといろいろと厳しいような感じもしなくは無いですが、業務でWeb App使うこと自体そんなに無いような気もします。普通にWebサーバ立てればいいですからね…
釈然としない気持ちが残りつつ、今回は以上です。
間違っている点や、気が付いた事があればコメント欄等で指摘していただくと嬉しいです。
でわでわ以上です。