玉没有find在不同的文件夹中的视图

我有一个这样的目录

/Workspace /app app.js /lib /public /styles *.css /scripts *.js /views *.jade 

app.jsapp ,我有以下代码:

 libPath = __dirname + '/../lib' ... express stuff ... app.configure(function() { app.set('view', libPath + '/views') ... express stuff ... app.use(express.static(libPath + '/public')) ... rest of the app ... 

现在问题是Jade找不到任何视图,但find了所有的静态资产。 因此, app.set('view')不起作用,但express.static是。 如果我将views目录复制到app ,使用__dirname + '/views'正常工作。 任何人都知道这是为什么发生?

app.get('view') ,我得到这样一个目录:/ /Users/jong/Workspace/app/../lib/views 。 我试图做绝对路由/Users/jong/Workspace/lib/views以及无济于事。 这个目录适用于静态资产而不是模板,这很奇怪。

你有一个错误的,正确的选项名称是views ,而不是view

configuration你的应用程序

  app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.set('view options', { layout: true }); 

但问题的根源在于,你似乎误解了express (以及MVC)的工作原理。

express将静态数据发送到浏览器,使用您的express.staticconfiguration指令,一旦请求url匹配现有的静态文件path。

否则,它会尝试为请求的pathfind任何已定义的路由并执行相关的控制器(可能会或可能不会使用模板引擎)。

所以,为了显示例如索引页面(即使它没有参数),假设你有一个index.js在你的views文件夹,你必须做一些像

 app.get('/', function (req, res, next) { res.render('index', {}); });