【问题标题】:iisnode and expressiisnode 和 express
【发布时间】:2013-11-02 06:56:23
【问题描述】:

我确信这个问题已经被问过一百万次了,但到目前为止我还没有找到任何解决以下问题的方法。

我有一个使用 nodejs 和 express 运行的基本应用程序。当我在节点中运行应用程序时,默认情况下它会将我发送到我的公用文件夹中的 index.html。即使我没有设置任何路线。我希望这发生。

我已经安装了 iisnode 并在“默认网站”下创建了一个名为“设备”的新应用程序。我把我的应用程序放在那里没有改变。阅读时我需要用 web.config 整理一些东西,并决定使用这里提到的配置(不是 yaml):

http://tomasz.janczuk.org/2012/05/yaml-configuration-support-in-iisnode.html

当我尝试在我的浏览器中加载应用程序时,它总是试图在我的 app.js 中找到路由并向我抛出消息,例如:

无法获取 /devices/

我真的用这个把头发拉出来了,不知道该怎么办!我是否必须在 app.js 入口点内为静态内容设置默认路由?我有以下内容:

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

但是当我从它的根目录加载应用程序时,它仍然没有将我交给 index.html:

'http://localhost/devices/'

谁能帮我解决这个问题?

【问题讨论】:

  • 我已经在另一个线程上回答了这个问题。看我的回答here

标签: javascript node.js iisnode


【解决方案1】:

解决此问题的最简单方法是为您的应用程序创建一个专用的 IIS 网站,而不是像您那样在 IIS 网站中创建一个 IIS 应用程序。

如果您在 IIS 中有一个专门用于 node.js 应用程序的网站,则可以在 URL 空间的根目录访问该应用程序,例如http://myapp.com/,这是默认快速路由配置所期望的。相反,如果您在 IIS 网站中创建一个 IIS 应用程序来托管您的 node.js 应用程序(例如 devices),则可以通过从属于该网站的根 URL 的 URL 访问它,例如http://myapp.com/devices/。额外的 URL 路径段 (devices) 是您的快速应用程序不期望的,并且未配置为处理,因此它拒绝请求。

如果您坚持将 node.js 应用程序作为 IIS 应用程序托管在 IIS 中,则需要扩充您的快速路由配置,以期望与 IIS 应用程序名称匹配的额外 URL 路径段。

【讨论】:

  • 我不会投反对票,因为你至少描述了这个问题,但我不会投反对票,因为尽管如此,你仍然没有提供解决方案。最终,所需的更改(请参阅下面的答案)有助于使应用程序在任何环境中都更加健壮,并克服 IIS 中虚拟目录带来的问题。
  • 我支持你是因为将节点应用程序隔离到它自己的专用网站上,这样可以减少 url 空间的根目录的混淆
【解决方案2】:

可以在以下位置找到一个很好的建议:Can an iisnode-hosted web application work out the virtual path at which it is hosted? 本质上,您使用一个小变量来抽象路径并使用一个环境变量(如果存在)来控制它。另一个好帖子(可能是更好的解决方案)可以在https://github.com/tjanczuk/iisnode/issues/160找到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-09-23
    • 2013-12-08
    相关资源
    最近更新 更多