5

我需要一些建议来让一个基本的快递应用程序在我的网站上运行。该站点托管在 Arvixe.com Windows 托管上。我可以在我的本地主机上运行代码并且它可以工作,但是一旦我将它移动到 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 很陌生。我是否遗漏了有关这些文件如何相互通信或阻止我的网站运行的情况?将来有没有一种简单的方法可以调试这样的事情?

4

1 回答 1

3

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

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

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

于 2013-10-05T03:28:44.783 回答