【问题标题】:Running basic node.js on windows hosted site在 Windows 托管站点上运行基本 node.js
【发布时间】:2013-10-11 18:43:06
【问题描述】:

我需要一些建议来让基本的快递应用程序在我的网站上运行。该站点托管在 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 非常陌生。我是否遗漏了有关这些文件如何相互通信或阻止我的网站运行的情况?将来有没有一种简单的方法可以调试这样的事情?

【问题讨论】:

  • 这是在他们的共享主机上还是您有 VPS?如果共享,您是否必须要求他们安装它或者它已经存在?
  • 节点站点位于其共享的 Windows 主机上。我不得不让他们安装节点。我还有一个 Linux 共享主机,必须自己安装。 Linux 版本对我来说是一个更难使用的过程,但我是 Windows 用户,所以我想这是意料之中的。我最终将我的网站全部切换到 Windows,从那时起它一直是一次很好的体验。

标签: javascript windows node.js express hosting


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 2017-10-20
    • 1970-01-01
    相关资源
    最近更新 更多