像我之前的许多人一样,我得到了以下错误:
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)有人能帮我这个忙吗?我已经在其他线程上尝试了其他几种解决方案,但到目前为止都没有成功。
如果您需要更多代码示例,请在评论中说明。
编辑:我找到了解决方案,请看下面我的答案。
发布于 2014-07-08 02:28:05
似乎要解决这个问题,我必须删除res.render()位中的/之前的分词。它搜索的完整路径是/home/aveline/git/multivision/server/views//partials/test
解决方案:
app.get('/partials/:partialPath',function(req, res){
res.render('partials/' + req.params.partialPath);
});https://stackoverflow.com/questions/24615965
复制相似问题