使用node / express跟踪路由错误

时间:2013-01-18 23:22:42

标签: node.js express

我最近用poet设置了我的快递网站。我可以使用post.url和提供给所有视图的所有本地人,除了url路由 - 例如,在我的blog.jade视图中:

 ul.blog-preview$
     each post in postList$
       li$
         a(href=#{post.url}) #{post.title}$  

视图呈现正常,但是当点击post.url时路由表达尝试:“http:// localhost:8080 / undefined / post / poet-testundefined”我试图访问的帖子称为'诗人-测试'。所以,我尝试在视图中打印出post.url

p #{post.url}

令我惊讶的是,它作为后期/诗人测试打印出来。所以,显然我尝试浏览到localhost:8080 / post / poet-test,但是因为post.title上的引用错误而无法正常工作,我怀疑这是一个问题,因为帖子在路由中以某种方式丢失了。

这是我的site.js(或大多数人都被称为app.js),我已经包含了我认为必须与解决此问题相关的内容。

var express   = require('express')
  , app       = module.exports = express()
  , http      = require('http')
  , poet      = require('poet')(app)

poet
  .createPostRoute()
  .createPageRoute()
  .createTagRoute()
  .createCategoryRoute()
  .init(function(locals) {
    locals.postList.forEach(function ( post ) {
  console.log('loading post: ' + post.url)
})
  })

app.configure(function(){
  //...etc
  app.use(app.router);
  //...etc
  app.use(express.static(__dirname + '/public'));
});
//Dev settings
app.configure('development', function(){
  app.use(express.errorHandler({ dumpExceptions:true, showStack:true }));
  app.set('port', process.env.PORT || 8080);
  app.use(express.logger('dev'));
});
//Production settings
//....etc

// controllers - load them
controllers = ["pages", "blog"]
for (i in controllers) {
  controller = require('./controllers/' + controllers[i]);
  controller.setup(app)
}

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});    

正如你所看到的,我在poet.init(函数(post){...})中检查了每个帖子的post.url,并且每个帖子都使用正确的/ post / title url进行检查。所以,我有点卡在这里。也许用app.router()或诗人特定的解决方案以某种方式记录路线。

1 个答案:

答案 0 :(得分:0)

查看Poet回购中的例子 - 你不应该逃避你的hrefs ..看起来诗人的网址很好,只是和Jade一起摔跤,试试这个:

a(href=post.url) post.title

https://github.com/jsantell/poet/blob/master/examples/views/includes/postSnippet.jade#L3