2

我基于Durandal 的文档创建了一个新的 NodeJS 站点。它在本地工作。我设置了 Windows Azure 以提取我的 GitHub 存储库的更改,它确实正确。

但是,(启用错误后)我收到了内部服务器错误

我检查了我的 FTP 的日志,但没有任何日志。有一个“Git”文件夹,但那里没有什么有趣的。

当我将 server.js 文件更改为 hello world 示例时,一切正常:

var http = require('http')
var port = process.env.PORT || 1337;
http.createServer(function(req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(port);

这是我的 server.js 现在:

var express = require('express'),
    routes = require('./routes'),
    engines = require('consolidate');

exports.startServer = function(config, callback) {

  var port = process.env.PORT || config.server.port || 1337;
  var app = express();
  var server = app.listen(port, function() {
    console.log("Express server listening on port %d in %s mode", server.address().port, app.settings.env);
  });

  app.configure(function() {
    app.set('port', port);
    app.set('views', config.server.views.path);
    app.engine(config.server.views.extension, engines[config.server.views.compileWith]);
    app.set('view engine', config.server.views.extension);
    app.use(express.favicon());
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(express.compress());
    app.use(config.server.base, app.router);
    app.use(express.static(config.watch.compiledDir));
  });

  app.configure('development', function() {
    app.use(express.errorHandler());
  });

  app.get('/', routes.index(config));

  callback(server);
};

那么,有没有人成功地在 Windows Azure 上托管过 Express(或者更具体地说,Mimosa 的 Durandal 骨架)NodeJS 站点?或者您知道如何或在哪里可以找到内部服务器错误?

4

1 回答 1

1

我在 Windows Azure 平台上启动了一些快速应用程序,并发现我有几个实例以非常安静的方式失败。我个人发现 Jay Harris 在这篇文章中建议的方法非常有用,因为它允许我导入依赖项(npm、bower 或其他)并运行 grunt 任务来编译项目等。

值得注意的几件事是,通常在新部署之后,更新才会显示,直到在控制面板中重新启动 Azure 服务器。有时部署脚本超时,我不得不定期检查它们。

这并不能完全回答您的代码有什么问题(抱歉),但我已经使用上述方法发布了一个示例,可能会有所帮助。主要的部署文件是 'web.config'、'deploy.sh' 和 '.deployment' 以及你的 'package.json' 文件。

于 2014-03-25T20:56:53.550 回答