2016/11/16 追記
App Service Planを"動的"にして動作させる場合、
比較的大きなnpmモジュールをロードする場合に、上手くロードできない問題がある模様。
プランを動的ではなく、"Classic"にして試したところKuduからCMDで問題なくnpm install出来ている。
思いの外ハマったのでメモ。
まずここを読んだ。
Azure Functions NodeJS 開発者向けリファレンス
https://azure.microsoft.com/ja-jp/documentation/articles/functions-reference-node/
ここには、
関数アプリのファイル システムの関数のフォルダーに package.json ファイルをアップロードすることで関数にパッケージを追加できます。
と書かれている。
package.jsonをアップロードして、実行すれば裏でよしなにnpm installしてくれるのかと思ったが、そんなことはない。
Kuduへ飛んで、npm installしてやる必要がある。
手順については、上述の Azure Functions NodeJS 開発者向けリファレンス に以下のように記載がある。
関数アプリの SCM (Kudu) コマンド ライン インターフェイスで npm install を使用することもできます。
1.https://.scm.azurewebsites.net に移動します。
2.[デバッグ コンソール]、[CMD] の順にクリックします。
3.D:\home\site\wwwroot に移動します。
4.npm install を実行します。
ここで、CMDではなく、PowerShellを選んで npm installする
CMDを使うとうまくインストールできなかった
その他のハマりポイント
Azure Functions developer reference (Azure Functions 開発者向けリファレンス)
https://azure.microsoft.com/ja-jp/documentation/articles/functions-reference/#fileupdate
ここに、
関数アプリの SCM (Kudu) エンドポイントを使用するには
1.https://.scm.azurewebsites.net に移動します。
2.[デバッグ コンソール]、[CMD] の順にクリックします。
3.D:\home\site\wwwroot に移動し、host.json または D:\home\site\wwwroot を更新し、関数のファイルを更新します。
4.アップロードするファイルをファイル グリッドのフォルダーにドラッグアンドドロップします。ファイルをドロップできるファイル グリッドには 2 つの領域があります。.zip ファイルの場合は、[Drag here to upload and unzip (アップロードして解凍するにはここにドラッグしてください)] というラベルの付いたボックスが表示されます。 他の種類のファイルの場合は、ファイル グリッド内の [unzip (ファイルの解凍)] ボックスの外側にドロップします。
と書かれている。
AWS Lambdaのようにzipを上げてデプロイができるっぽい、と思って試したが、
上げてみると、解凍後、node_modules内部のファイルが不完全になったりする。
zipがうまく解凍できないようだ。