繁体   English   中英

iisnode和快递

[英]iisnode and express

我确定这个问题已被问了一百万次,但我还没有找到解决以下问题的方法。

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

我安装了iisnode并在'Default Website'下创建了一个名为'Devices'的新应用程序。 我把我的申请保持不变。 阅读我需要用web.config排序一些东西,并决定使用这里提到的配置(而不是yaml):

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

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

无法获取/设备/

我真的用这个把头发拉出来,不知道该做什么! 我是否必须在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://本地主机/设备/'

有人能帮我解决这个问题吗?

解决此问题的最简单方法是为您的应用程序创建专用的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路径段。

可以在以下位置找到一个好的建议: iisnode托管的Web应用程序是否可以在其托管的虚拟路径上运行? 实质上,您使用一个小变量来抽象路径和一个环境变量(如果它存在)来控制它。 另一个好帖子(可能更好的解决方案)可以在https://github.com/tjanczuk/iisnode/issues/160找到

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM