2014-03-25 143 views
2

託管一個明確的NodeJS網站我創建了一個基於the documentation of Durandal一個新網站的NodeJS。它在本地工作。我設置了Windows Azure來引入my GitHub repository的更改,它可以正確執行。在Windows Azure上

然而,(後使錯誤),我發現了an internal server error

我檢查了我的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); 
}; 

那麼,有沒有人成功地主辦了Express(或更具體地說,含羞草的Durandal骨架)Windows Azure上的NodeJS站點?或者你知道如何或在哪裏可以找到內部服務器錯誤?

+0

如果你得到這個想通了,我很想知道它需要把香草含羞草/迪朗達爾應用與天青舉辦一些步驟。有點像Heroku的步驟:http://mimosa.io/about.html#Heroku –

+0

我目前正在研究它(在我的空閒時間)。我一定會讓你知道的。馬克的回答讓我開始了一條新的道路。我會在找到解決方案時進行更新。 – Peter

+0

@DavidBashford我已經對它進行了大量的工作和[博客](http://petermorlion.blogspot.be/2014/03/getting-mimosa-durandal-app-to-work-on.html)。簡而言之,您需要讓Azure引入/ dist內容並啓動app.js,而不是server.js。 – Peter

回答

1

我已經推出了Windows Azure平臺上的幾個明確的應用程序,發現我有相當失敗默默的這幾個實例。我個人發現Jay Harris在post中建議的方法非常有用,因爲它允許我導入依賴項(npm,bower或其他)並運行grunt任務來編譯項目等。

有幾件值得注意的事情是:通常在新部署之後,直到重新啓動控制面板中的Azure服務器纔會顯示更新。有時部署腳本會超時,我必須定期檢查它們。

這並不完全回答什麼是你的代碼錯誤(對不起),但我一直在使用上面提到的方法可以幫助發佈了example。主要的部署文件是'web.config','deploy.sh'和'.deployment'以及'package.json'文件。

+0

我已經把所有的細節都放在了[博客文章]中(http://petermorlion.blogspot.be/2014/03/getting-mimosa-durandal-app-to-work-on.html),但是你糾正最重要的部分是web.config和deploy.sh(在我的情況下是.cmd)。 – Peter

+1

通讀您的博客文章,看起來不錯。我沒有使用含羞草,但它看起來像你可以做我所做的與Grunt。在安裝npm包(含mimosa)後的'deploy.sh'中,可以調用Mimosa(build -omp)命令將應用程序編譯到'/ dist'目錄中。這樣你就不必將任何編譯好的代碼提交到你的repo中,只需用dev文件保持清潔。 – Mark