javascript - iisnode 和 express

标签 javascript node.js iisnode

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

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

谁能帮我解决这个问题?

最佳答案

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

关于javascript - iisnode 和 express,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12478982/

相关文章:

javascript - 观察vue中的div宽度变化

javascript - LZ 字符串压缩文本的 Mysql 数据类型

node.js - Sequelize targetKey 不起作用

node.js - Azure 网站 - NodeJS - 崩溃

node.js - 服务器发送的事件不适用于 Azure 中的 Window 应用服务

javascript - 使用Jquery获取上传图片名称的问题

描述标签中关键字的 Javascript 语句

node.js - 无法安装 Node 7.5.0

json - 从数据数组创建单独的标签 - Node.js

node.js - Node 在IIS中找不到模块,可以从提示符中找到