我敢肯定这个问题已经被问了一百万次了,但是到目前为止我还没有找到任何解决以下问题的方法。
我有一个使用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入口点内的静态内容设置默认路由?我已经准备好了以下内容:
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/‘
有人能帮我解决这个问题吗?
发布于 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找到
发布于 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路径段。
https://stackoverflow.com/questions/12478982
复制相似问题