无法用Express + jade + angular查找视图

像我之前这么多,我得到以下错误:

Failed to lookup view "/partials/test" in views directory "/home/aveline/git/multivision/server/views" 

由于我使用Jade,所以我的模板通过app.get(这是我的server.js文件)呈现:

 var express = require('express'), stylus = require('stylus'), logger = require('morgan'), bodyParser = require('body-parser'); var env = process.env.NODE_ENV = process.env.NODE_ENV || 'development'; var app = express(); function compile(str, path){ return stylus(str).set('filename', path); } app.set('views', __dirname + '/server/views'); app.set('view engine','jade'); app.use(logger('dev')); app.use(bodyParser()); app.use(stylus.middleware( { src: __dirname + '/public', compile: compile } )); app.use(express.static(__dirname + '/public')); app.get('/partials/:partialPath',function(req, res){ res.render('/partials/' + req.params.partialPath); }); app.get('*', function(req, res){ res.render('index'); }); var port = 3030; app.listen(port); console.log("Listening on port " + port); 

事情是,这个模板“test.jade”实际上是在这个目录下。 所以当我到localhost:3030(我听的端口),我得到这个错误(全堆栈):

 Error: Failed to lookup view "/partials/test" in views directory "/home/aveline/git/multivision/server/views" at Function.app.render (/home/aveline/git/multivision/node_modules/express/lib/application.js:485:17) at ServerResponse.res.render (/home/aveline/git/multivision/node_modules/express/lib/response.js:794:7) at Object.port [as handle] (/home/aveline/git/multivision/server.js:27:6) at next_layer (/home/aveline/git/multivision/node_modules/express/lib/router/route.js:113:13) at Route.dispatch (/home/aveline/git/multivision/node_modules/express/lib/router/route.js:117:5) at /home/aveline/git/multivision/node_modules/express/lib/router/index.js:222:24 at param (/home/aveline/git/multivision/node_modules/express/lib/router/index.js:307:14) at param (/home/aveline/git/multivision/node_modules/express/lib/router/index.js:323:14) at Function.proto.process_params (/home/aveline/git/multivision/node_modules/express/lib/router/index.js:367:3) at next (/home/aveline/git/multivision/node_modules/express/lib/router/index.js:216:19) 

任何人都可以帮助我吗? 我已经尝试了其他线程上的其他解决scheme,但没有工作到目前为止。

如果您需要更多代码示例,请在评论中说明。

编辑:我find了解决办法,看看我下面的答案。

看来要解决这个问题,我必须删除res.render()位中的/之前的部分。 它search的完整path是/ home / aveline / git / multivision / server / views // partials / test

解:

 app.get('/partials/:partialPath',function(req, res){ res.render('partials/' + req.params.partialPath); });