【问题标题】:In express router method is not working if i serve static files如果我提供静态文件,则在快速路由器方法中不起作用
【发布时间】:2013-05-29 16:35:18
【问题描述】:

在我的节点应用程序中,首先我想提供我的静态文件,然后根据传入的请求使用路由器方法,我将查询数据库并获取 html 页面的正文,然后我将此正文内容发送到客户端并最后使用 Backbone.js 我将在我的 html 页面中呈现这个正文。现在我的问题是如果我提供静态文件,则表示快速路由器方法不起作用。但是如果我删除以下行意味着我的路由器正在工作。

app.use(express.static(__dirname + '/public'));

app.js

var express=require('express');
var app=express();

app.use(express.static(__dirname + '/public'));

app.get('/',function(req,res){

   console.log('router called successfully...');
   res.send('body of the page');
   res.end();

});

app.listen(8011);

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:
    app.use(express.static(__dirname + '/public'));
    

    你不必要的匿名函数搞砸了中间件的工作方式。上述行在 95% 或更多的 express 示例应用程序中出现。不知道你为什么决定偏离它,但你的版本是一个无用的中间件,它创建一个静态中间件并立即丢弃它。

    【讨论】:

    • 是 app.use(express.static(__dirname + '/public'));这会起作用,但如果我使用这种方法,我的路由器功能将不起作用。
    • 您的public 目录中有“index.html”文件吗?当你说“不工作”时,请养成描述它IS 在做什么或你遇到了什么错误而不是“不工作”的习惯,这对希望帮助你的人没有多大帮助。
    • 是的,我在公共文件夹中有 index.html 页面。然后在路由器方法中,我添加了一条 console.log 消息,该消息没有显示,所以我告诉它它不起作用。跨度>
    • 此代码有效,将代码复制并粘贴到文件中并在另一个 shell 实例中运行:curl 127.0.0.1:8011curl 127.0.0.1:8011/index.html(如果 index.html 是您的 @987654327 中的文件名@文件夹!)
    • @robertklep 感谢您提供宝贵的信息,我将从公共文件夹中重新整理 index.html..
    猜你喜欢
    • 2021-12-10
    • 2017-08-16
    • 2018-03-12
    • 2020-07-07
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 2019-06-14
    • 2012-06-07
    相关资源
    最近更新 更多