首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iisnode和express

iisnode和express
EN

Stack Overflow用户
提问于 2012-09-18 22:24:15
回答 2查看 3.4K关注 0票数 5

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

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

我已经安装了iisnode,并在“默认网站”下创建了一个名为“Devices”的新应用程序。我原封不动地把我的申请放进去了。在阅读时,我需要整理一些关于web.config的东西,并决定使用这里提到的配置(而不是yaml):

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

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

无法获取/devices/

这件事真让我抓狂,不知道该怎么办!我是否必须为app.js入口点内的静态内容设置默认路由?我已经准备好了以下内容:

代码语言:javascript
复制
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/

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-02 06:46:49

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

票数 3
EN

Stack Overflow用户

发布于 2012-09-19 00:41:05

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

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

如果您坚持将node.js应用程序作为IIS应用程序驻留在IIS中,则需要增加快速路由配置,以获得与IIS应用程序名称匹配的额外URL路径段。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12478982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档