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



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

在我的网站的根目录中,我有一个名为 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>

这是应用程序.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文件,在应用程序中.js我将app.listen更改为使用PORT而不是本地端口号。我正在访问的唯一文件应该是app.js和express,它们都在那里。

我对节点.js和表达很陌生。我是否缺少有关这些文件之间如何相互通信或发生了什么事情来阻止我的网站运行的内容?有没有一种简单的方法可以在将来调试这样的事情?

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

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

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

最新更新