node.js - nodejs express 3.0 app.use 是否被调用

标签 node.js express

我正在使用 Express 3.x 并且当我放置

express = require("express")
routes = require("./routes")
http = require("http")
path = require("path")
app = express()
app.configure ->
    app.set "port", process.env.PORT or 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"))

app.use (req,res,next)->
    res.locals.name = "Jesse"
    next()


app.use "/", (req,res,next)->
    res.locals.name = "Jesse"

app.configure "development", ->
    app.use express.errorHandler()

app.get "/", routes.index

http.createServer(app).listen app.get("port"), ->
    console.log "Express server listening on port " + app.get("port")

我的观点

extends layout

block content
  h1= title
  p Welcome to #{title}
  p Hello Mr #{name}

我希望每次收到 get 请求时都会调用第一个中间件 (app.use),但它并没有发生。 express2.x有什么变化吗?

这是来自 express 3.x 目录并且有注释

https://github.com/visionmedia/express/blob/master/examples/view-locals/index.js

谢谢

最佳答案

它应该是这样的。你必须把中间件放在 app.router

上面
express = require("express")
routes = require("./routes")
http = require("http")
path = require("path")
app = express()
app.set "port", process.env.PORT or 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 (req,res,next)->
    res.locals.name = "Jesse"
    next()

app.use app.router
app.use express.static(path.join(__dirname, "public"))

app.configure "development", ->
    app.use express.errorHandler()

app.get "/", routes.index

http.createServer(app).listen app.get("port"), ->
    console.log "Express server listening on port " + app.get("port")

关于node.js - nodejs express 3.0 app.use 是否被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12546370/

相关文章:

node.js - 在 Node js + Express + Passport + MongoDB 中更新用户记录

javascript - Express.js 服务器端错误消息不起作用

angular - 部署的应用程序引擎未对我的内容进行 gzip 压缩

javascript - 从 discord.js 中的消息获取表情符号 url

JavaScript 与 Mongoose 的 Promise

javascript - Selenium-Webdriver, driver.findElement(...).getLocation 不是一个函数,为什么?

node.js - 无法从发布请求中检测\n字符串中的字符

node.js - 运行简单的 Node js 服务器

node.js - 如何将 AWS lambda 函数变成自己的 https 端点?

javascript - 404 错误, 'get' 从本地托管服务器获取请求