bac*_*esk 5 javascript node.js iisnode
我确定这个问题已被问了一百万次,但我还没有找到解决以下问题的方法.
我有一个使用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')));
});
Run Code Online (Sandbox Code Playgroud)
但是当我从它的根加载应用程序时,它仍然没有把我交给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路径段.
可以在以下位置找到一个很好的建议:Can an iisnode-hosted web application work out the virtual path at which it is Hosted? 本质上,您使用一个小变量来抽象路径,并使用一个环境变量(如果存在)来控制它。另一篇好文章(可能是更好的解决方案)可以在https://github.com/tjanczuk/iisnode/issues/160找到