2013-10-04 47 views
4

我需要一些建議,以獲得一個基本的快速應用程序在我的網站上工作。該網站託管在Arvixe.com窗口託管。我可以在我的本地主機上運行代碼,它可以工作,但只要我將它移動到Arvixe網站,它就會給我一個404錯誤 - 找不到文件或目錄。在windows託管的網站上運行基本的node.js

在我的網站的根目錄中,我有一個名爲node_modules的文件夾,其中包含快捷方式。我也有一個app.js文件和一個web.config文件。

這是web.config文件:

<configuration> 
    <system.webServer> 
    <handlers> 
      <add name="iisnode" path="app.js" verb="*" modules="iisnode" /> 
    </handlers> 
    <defaultDocument enabled="true"> 
     <files> 
      <add value="app.js" /> 
     </files> 
    </defaultDocument> 
    </system.webServer> 
</configuration> 

這是app.js文件:

var express = require('express'); 
var app = express(); 

app.get('/', function(request, response) { 
    response.send("This would be some HTML"); 
}); 

app.get('/api', function(request, response) { 
    response.send({name:"Raymond",age:40}); 
}); 
app.listen(process.env.PORT); 

本地主機版本,這個版本之間的唯一區別是有一個網頁。配置文件和app.js我改變了app.listen使用PORT而不是本地端口號。我正在訪問的唯一文件應該是app.js和express,並且它們都在那裏。

我對node.js和express很陌生。我是否錯過了關於這些文件如何相互通信或阻止我的網站運行的情況?有沒有簡單的方法可以在將來調試這樣的事情?

+0

這是在他們的共享主辦或你有一個VPS?如果共享,你是否必須要求他們安裝它或者它已經在那裏? – Jason

+0

節點站點位於其共享的Windows主機上。我不得不要求他們安裝節點。我也有一個Linux共享主機,並且必須自己安裝它。 Linux版本對我來說是一個非常困難的過程,但我是一個Windows用戶,所以我想這是預期的。我最終將我的網站切換到Windows,並且從此以後一直是一個很好的體驗。 – curtwphillips

回答

2

我找到了一種方法來使這個工作。我將此代碼添加到我的web.config中:

<rewrite> 
     <rules> 
     <rule name="/"> 
      <match url="/*" /> 
      <action type="Rewrite" url="app.js" /> 
     </rule> 
     </rules> 
    </rewrite> 

我很驚訝這是必要的,因爲app.js被設置爲默認文檔。顯然Express需要重寫URL而不是使用默認文檔標籤。