2013-03-15 34 views
7

Nó có vẻ như Windows Azure hy vọng rằng trang web của Node.js của bạn nên chạy với:Mặc định root (server.js) nộp cho trang web của Node.js trên Windows Azure

node server.js 

Có cách nào để thay đổi lệnh này ? Cụ thể, gốc ứng dụng của tôi là index.js intead của server.js, vì vậy tôi muốn rằng nó đã làm:

node index.js 

Bất cứ ai cũng biết nếu điều này là cấu hình? Và ngay cả khi nó được, nó thường được coi là hình thức xấu để có bất cứ điều gì khác hơn là server.js?

+4

Tôi có thể nhầm lẫn, nhưng tôi nghi ngờ rằng chúng không chạy 'node server.js' nhưng thay vào đó bắt đầu' npm 'mặc định là' node server.js', đó là lý do tại sao câu trả lời của chris là đặt main của package.json của bạn. Bạn cũng có thể đặt tập lệnh bắt đầu, xem npmjs.org để biết chi tiết. – generalhenry

+0

Bạn đã bao giờ làm việc này chưa? Tôi đã thử thiết lập một tệp package.json đã định nghĩa lại tệp 'start' nhưng có vẻ như Azure đang tìm kiếm một tệp server.js cụ thể để nó không hoạt động đối với tôi. – martega

Trả lời

13

gì làm việc cho tôi là generalhenry của đề nghị trên:

Trong package.json, thêm:

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

Bạn đang hỏi về các trang web Azure?

Cố gắng thiết lập

"main": "./index.js" 

trong tập tin package.json của bạn.

6

Không ai trong số các giải pháp trên làm việc cho tôi. Tìm kiếm một thứ khác, tôi đã tìm ra giải pháp. Bạn phải đặt điểm vào của bạn trong tệp web.config, đây là tệp xml. Kiểm tra tệp ví dụ này (bạn chỉ cần thay thế server.js bằng bất kỳ thứ gì bạn muốn):

<?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> 
Các vấn đề liên quan