快递无法查看视图

时间:2014-05-28 19:13:17

标签: javascript node.js express mean-stack

我正在尝试创建一个SPA应用程序,但是当我启动我的应用程序时,它会执行一个导致崩溃的infinte循环。我正在使用ExpressJS 4.3.0

应用程序架构:

  公共

     

- 泛音

     

---- index.jade

     

server.js

我的快递代码:

var app = express();
var port = process.env.PORT || 8080;

app.set('views', __dirname + '/public');
app.set('view engine', 'jade');

app.use(express.static(__dirname + '/public'));

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

app.listen(port);
console.log('Server is running on port: ' + port);

如果我使用

res.render('/partials/index');

我收到一条消息:

Error: Failed to lookup view "/partials/index" in views directory 

2 个答案:

答案 0 :(得分:1)

因为快递view lookup

中的查看查找功能
if (!utils.isAbsolute(path)) path = join(this.root, path);

这使得它假定'/ partial / index'已经是绝对路径并且没有根路径的前缀。

同时移动

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

结束其他地方它将始终提供索引视图。

答案 1 :(得分:0)

看起来您/的视图路径中不应该有前一个render()。只需使用'partials/' + req.params.name

在相关说明中,您确定要将实际的视图文件公开吗?通常它们存储在公共静态目录之外(例如./public包含静态资产,./partials包含视图)。另外,您不必使用partials/为视图路径添加前缀。