パラメータとして2つの日時を取るノード/エクスプレスを使用して書かれたかなり基本的なREST呼び出しがあります(http://localhost:3000/schedules/'2012-06-28T16:00:00'/'2012-06-28T19: 00:00') ノード実行可能ファイルに対して (Windows と Mac で) 直接テストを実行すると、ローカルでは問題なく動作しますが、git 経由で Azure にデプロイすると、悪名高い黄色い画面が表示されます。
Azureからのデバッグログは空です(ノードのconsole.logsに到達しない)ので、ノードexeにルーティングされる前にiisnodeのどこかでエラーが発生していると推測しています。次の形式 (http://localhost:3000/schedules/2012-06-28/2012-06-29) を使用すると、呼び出しは正常に機能します。もう少しテストするために iisnode をインストールしようとしていましたが、深く掘り下げる前に、他の誰かがこの問題に遭遇したかどうか疑問に思っていました.
コードの一部を次に示します。
ルート
app.param('startdate',
function(req, res, next, startdate) {
req.startdate = startdate;
next();
});
app.param('enddate',
function(req, res, next, enddate) {
req.enddate = enddate;
next();
});
app.get('/schedules/:startdate/:enddate',scheduleController.getSchedulesByStartDateAndEndDate);
スケジュールコントローラー
exports.getSchedulesByStartDateAndEndDate = function(req, res){
console.log('getSchedulesByStartDateAndEndDate');
console.log('StartDate'+req.params.startdate);
console.log('EndDate'+req.params.enddate);
ScheduleProvider.getSchedulesByStartDateAndEndDate(req.params.startdate, req.params.enddate,function(schedules){
res.send(schedules);
});
};
スケジュールプロバイダー
ScheduleProvider.prototype.getSchedulesByStartDateAndEndDate = function(startdate,enddate,callback){
console.log(startdate);
console.log(enddate);
var stDate = startdate;
var endDate = enddate;
if (stDate !== undefined) {
var startDate = new Date(unescape(stDate.toString()).replace(/'/gi, ""));
endDate = new Date(endDate === undefined ? startDate: unescape(endDate.toString()).replace(/'/gi, ""));
var sttimes = getTimes(startDate);
var endtimes = getTimes(endDate);
console.log(startDate);
console.log(endDate);
console.log(sttimes[0]);
console.log(sttimes[1]);
console.log(endtimes[0]);
console.log(endtimes[1]);
Schedule.find({
$or: [
{
'StartDate': {
$gte: sttimes[0],
$lt: endtimes[1]
}
},
{
'EndDate': {
$gt: sttimes[0],
$lte: endtimes[1]
}
}
]
}, function(err, schedules){
callback(schedules);
}).sort('StartDate', 'ascending');
}
};
私はマングースを使用して呼び出しを行っていますが、プロバイダーまたはコントローラーのコードに到達しているとは思いません。紺碧が渡された日付を好まず、例外をスローしているようです。