在各种目录中加载Jade模板?

我无法从这张票的结果工作。 我只是试图创build更多的模块化代码块,并希望把路线和视图放在一起。 我需要一个健康检查这一个。

我无法获取使用相对path拾取Jade文件的路由(我不喜欢相对path): Error: Failed to lookup view "../test/app" 。 请帮忙 :)

Github: https : //github.com/franklovecchio/stackoverflow-13770206

文件夹结构:

  . │ ├── package.json ├── public │ └── lib │ └── login │ ├── 0.0.1 │ │ └── routes.coffee │ └── test │ └── app.jade ├── server.coffee └── views └── layout.jade 

server.coffee

 express = require('express') http = require('http') path = require('path') app = express() app.configure () -> app.set 'port', process.env.PORT or 3000 # Give us the ability to specify port through command-line or external process. app.set 'view options', layout: false app.set 'view engine', 'jade' app.use express.favicon() # auto-gen app.use express.logger('dev') # auto-gen app.use express.bodyParser() # auto-gen app.use express.methodOverride() # auto-gen # Required by session() middleware # Pass the secret for signed cookies app.use express.cookieParser('The Stay Puft Marshmallow Man') app.use app.router app.use express.static(path.join(__dirname, '/public')) # Serve static assets. app.configure 'development', -> app.use express.errorHandler() app.use require('readymade').middleware(root: '/public') # Make .coffee/.less serve as compiled .js/.css files. # Routes # ====================== Login ====================== # login = require './public/lib/login/0.0.1/routes' app.get '/', login.view # ====================== /Login ====================== # http.createServer(app).listen app.get('port'), -> console.log 'Express server listening on port: ' + app.get('port') 

routes.coffee

 exports.view = (req, res) -> res.render '../test/app' 

app.jade

 extends ../../../../views/layout p login 

layout.jade

 doctype 5 html head title My title block head body #content block content 

的package.json

 { "name": "myapp", "description": "modular", "version": "0.0.1", "private": true, "dependencies": { "express":"3.0.4", "less":"", "jade":"", "markitup":"", "readymade": "" } } 

它与public目录是你的静态文件服务目录。 从server.coffee删除以下行,它将工作得很好。

 app.use express.static(path.join(__dirname, '/public')) # Serve static assets. 

或者,把你的代码和视图放在public目录之外。

routes.coffee

 exports.view = (req, res) -> res.render __dirname + '../test/app'