2016-12-06 49 views
2

我創建了一個應用程序(Node.js + Express),在本地運行它。然後,我在Azure上創建了Node.js應用程序,並通過FTP上傳文件。然後我堅持 - 如何運行它?Node.js在本地工作,但遠程返回「Bad request」

我在azure中找到了一種遠程控制檯,並從那裏安裝了所有軟件包。但是當我嘗試運行該應用程序時:「npm start」我只有一行返回:「錯誤的請求」。這是什麼意思?該怎麼辦?

./bin/www文件的開頭:

var app = require('../app'); 
var debug = require('debug')('goWeb:server'); 
var http = require('http'); 

/** 
* Get port from environment and store in Express. 
*/ 

var port = normalizePort(process.env.PORT || '3000'); 
app.set('port', port); 

/** 
* Create HTTP server. 
*/ 

var server = http.createServer(app); 

/** 
* Listen on provided port, on all network interfaces. 
*/ 

server.listen(port); 
server.on('error', onError); 
server.on('listening', onListening); 

goWeb - 是我的應用程序,在package.js提及。

UPD我改變了端口爲80,現在我有錯誤「端口80需要提升的權限」。我不知道下一步該怎麼做。 感謝

+0

您需要顯示一些代碼。例如。 「npm start」命令是做什麼的? –

+0

我不知道它在azure上做了什麼(我相信別的東西),但是它在本地進入./bin/www並運行www文件。但遠程 - 即使我運行「節點./bin/www」我有同樣的結果。即使我運行「node app.js」,它也會返回相同的結果。 – mimic

+0

就像@ miparnisari說的:你沒有顯示任何代碼,因此找出發生的事情是不可能的。只是好奇:你的應用在監聽什麼端口? –

回答

0

看來你app.js文件不是在內容由Web服務器提供服務iisnode,你不需要做npm start在Azure的Web應用程序wwwroot文件夾。

你可以看看我的wwwroot結構,它看起來像這樣: enter image description here

您還可以自定義app.js文件的路徑與web.config以下行。

<handlers> 
    <!-- Indicates that the app.js file is a node.js site to be handled by the iisnode module --> 
    <add name="iisnode" path="app.js" verb="*" modules="iisnode"/> 
</handlers> 
+0

我的應用程序在Node.js下運行,沒有任何IIS的跟蹤,所以我甚至沒有任何web.config文件。 – mimic

+0

部署到'Azure App Services'的Node.js應用程序使用'iisnode'模塊來運行,當'server.js'或'app.js'文件作爲入口時'web.config'文件將自動創建放在'wwwroot'目錄下。 –

+0

哦,我明白了,你是對的!我不知道IIS。聽起來很奇怪。 – mimic

相關問題