2013-03-15 50 views
7

好像Windows Azure的期待您的node.js的網站應該與運行:默認的根(server.js)文件的node.js網站上的Windows Azure

node server.js 

有沒有辦法來改變這種命令?具體來說,我的應用程序的根是index.js這一翻譯的server.js,所以我更喜歡它做的事:

node index.js 

任何人都知道這是可配置?即使是這樣,除了server.js以外,通常認爲它是不好的形式嗎?

+4

我可能是錯的,但我懷疑他們沒有運行'節點server.js'而是'NPM啓動'默認爲'node server.js'這就是爲什麼chris的答案是設置你的package.json的main。您也可以設置啓動腳本,詳情請參閱npmjs.org。 – generalhenry 2013-03-16 00:56:34

+0

你有沒有得到這個工作?我嘗試設置一個重新定義'start'文件的package.json文件,但它看起來像Azure特意查找server.js文件,因此它不適用於我。 – martega 2013-05-03 23:16:28

回答

13

什麼工作對我來說是上述generalhenry的建議:

在的package.json,補充:以上爲我工作

"scripts": { 
    "start": "node index.js" 
} 
0

您在詢問Azure網站嗎?

嘗試設置

"main": "./index.js" 

在你的package.json文件。

6

的解決方案都不是。尋找另一件事,我找到了解決辦法。您必須在web.config文件中設置您的入口點,該文件是一個xml文件。檢查此示例文件(你就必須用任何你想要更換server.js):

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.webServer>   
     <handlers> 
      <add name="iisnode" path="server.js" verb="*" modules="iisnode"/> 
    </handlers> 
     <rewrite> 
      <rules> 
       <rule name="LogFile" patternSyntax="ECMAScript" stopProcessing="true"> 
        <match url="iisnode"/> 
       </rule> 
       <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">      
        <match url="^server.js\/debug[\/]?" /> 
       </rule> 
       <rule name="StaticContent"> 
        <action type="Rewrite" url="public{{REQUEST_URI}}"/> 
       </rule> 
       <rule name="DynamicContent"> 
        <conditions> 
          <add input="{{REQUEST_FILENAME}}" matchType="IsFile" negate="True"/> 
        </conditions> 
        <action type="Rewrite" url="server.js"/> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration>