3

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からの変更はありますか?

これはexpress3.xディレクトリからのものであり、コメントが付けられています

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

ありがとう

4

4 に答える 4

9

これがどのように見えるべきかです。ミドルウェアを上に配置する必要があります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")
于 2012-09-24T17:58:46.760 に答える
3

DEBUGフラグを使用してスクリプトを実行して、何が起こっているかを確認できます。Expressには、定義されているルートと要求の処理方法を示すデバッグステートメントがあります。

$ DEBUG=* node app.js
于 2012-09-22T18:47:54.473 に答える
1

app.useを一番上に移動します...そしてそれは動作するはずです。:)

于 2012-09-24T16:29:16.650 に答える
0

ミドルウェアをapp.configure()セクションの上に配置する必要があります。

于 2012-09-24T15:37:30.227 に答える