「Azure SDK for node.js」を使わずに、Visual Studio Online上だけの操作でExpress 4を動かしました。
node.js、Expressのことをよく分かっていないせいだと思いますが、いくつかハマったポイントがあるので、備忘録的に。
##1.Expressのエントリーポイント
Express 4では、作成したアプリのエントリーポイントがbin/wwwになっています。
Azureの細かい動きは把握していませんが、
http://willi.am/blog/2014/05/07/running-express-4-sites-on-azure/
によると、Azureは「package.json」の中にあるエントリーポイントを参照していないようです。
そのため、Azureが最初に探すファイルであるserver.jsに、Express 4のエントリーポイントである
bin/wwwをrequireするコードを記載することで、Expressが動きました。
server.jsのコードは、下記の通り1行だけです。
//sample01フォルダでExpressアプリを作成した場合
require('./sample01/bin/www');
##2.server.jsの配置場所
server.jsはAzure Web Siteのホームディレクトリ「D:\home\site\wwwroot」に置きます。
server.jsからbin/wwwを参照してapp.jsに辿り着くイメージでしょうか。
##3.その他参考
・上記にも記載したここが大変参考になりました。ありがとうございました。
・Visual Studio OnlineのConsole上でExpressをインストールする時、今は「npm install express -g」ではなく、
「npm install express-generator -g」なので、ご注意を。公式ドキュメントを読んでいなくて、最初間違えた。。
・なんとなく動作確認時のpackage.jsonを晒しておきます。
{
"name": "sample01",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node ./bin/www"
},
"dependencies": {
"express": "~4.9.0",
"body-parser": "~1.8.1",
"cookie-parser": "~1.3.3",
"morgan": "~1.3.0",
"serve-favicon": "~2.1.3",
"debug": "~2.0.0",
"jade": "~1.6.0"
}
}
AzureでExpressを動かすのはちょっと一手間かかるようですが、とにかく動きました。