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

我有一个使用nodejs和express运行的基本应用程序。当我在 Node 上运行该应用程序时,默认情况下,它会将我发送到公用文件夹中的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/'

有人能帮我这个忙吗?

最佳答案

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

09-25 19:39