在Windows托管站点上运行基本node.js

时间:2013-10-04 16:55:26

标签: javascript windows node.js express hosting

我需要一些建议才能在我的网站上使用基本的快速应用程序。该网站托管在Arvixe.com上。我可以在我的localhost上运行代码并且它可以工作,但是一旦我将它移动到Arvixe站点,它就会给我一个404错误 - 找不到文件或目录。

在我的网站的根目录中,我有一个名为node_modules的文件夹,其中包含express。我还有一个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);

localhost版本与此版本之间的唯一区别是有一个web.config文件,在app.js中我更改了app.listen以使用PORT而不是本地端口号。我正在访问的唯一文件应该是app.js和express,它们都在那里。

我是node.js和express的新手。我错过了一些关于这些文件之间如何相互通信或者发生了什么阻止我的网站运行的问题?有一种简单的方法可以在将来调试这样的东西吗?

1 个答案:

答案 0 :(得分:3)

我找到了一种让它发挥作用的方法。我将此代码添加到我的web.config:

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

我很惊讶这是必要的,因为app.js已设置为默认文档。显然,Express需要重写网址而不是使用默认文档标记。