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

5
我需要一些有关在我的网站上让基本的express应用程序工作的建议。该网站托管在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);

本地版本和这个版本唯一的区别是有一个 web.config 文件,还有在 app.js 中,我将 app.listen 改成使用 PORT 而不是本地端口号。 我只访问 app.js 和 express 两个文件,它们都在那里。
我对 node.js 和 express 很陌生。我是否错过了它们之间通信的某些内容,或者我的网站停止运行发生了什么? 未来有没有简单的调试方式可以解决这样的问题?

这是在他们的共享主机上还是你有一个VPS?如果是共享的,你是否不得不要求他们安装它还是已经存在了? - Jason
该节点站点位于他们的共享Windows托管上。我不得不要求他们安装节点。我还有一个Linux共享托管并且必须自己安装它。对我来说,Linux版本是一个更难处理的过程,但我是一个Windows用户,所以这是可以预料的。我最终将我的所有站点都切换到了Windows上,自那以后一直是一个很好的体验。 - curtwphillips
1个回答

3
我找到了一种方法让它能够工作。我在我的web.config文件中添加了这段代码:
   <rewrite>
      <rules>
        <rule name="/">
          <match url="/*" />
          <action type="Rewrite" url="app.js" />
        </rule>
      </rules>
    </rewrite> 

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接