jade 渲染不能执行

来源:6-6 第六天 存储并展现电影列表

慕设计5937481

2016-08-06

路由执行/movie 或者/movie/:id的时候可以执行,但是执行到

yield this.render('wechat/game' , params) ;

的时候就没有了,也没有打印什么错误,不知道是哪里出了错误,上一步的params能打印出来

这是game.js

'use strict'
var wx = require('../../wx/index') ; 
var wechatApi = wx.getWechat() ;
var util = require('../../libs/util') ;
var movieApi = require('../api/movie') ;

exports.guess = function *(next) {
    var data = yield wechatApi.fetchAccessToken() ; 
    var access_token = data.access_token ; 
    var ticketData = yield wechatApi.fetchApiTicket(access_token) ; 
    var ticket = ticketData.ticket ; 
    var url = this.href.replace(':8000' , '') ; 
    var params = util.sign(ticket , url) ;
    yield this.render('wechat/game' , params) ;
}

exports.find = function *(next) {
    var id = this.params.id ; 
    var data = yield wechatApi.fetchAccessToken() ; 
    var access_token = data.access_token ; 
    var ticketData = yield wechatApi.fetchApiTicket(access_token) ; 
    var ticket = ticketData.ticket ; 
    var url = this.href.replace(':8000' , '') ; 
    var params = util.sign(ticket , url) ;
    var movie = yield movieApi.searchById(id) ; 
    params.movie = movie ; 
    yield this.render('wechat/movie' , params) ;
}

这里是app.js

var Koa = require('koa') ; 
var wechat = require('./app/controllers/wechat') ; 
var mongoose = require('mongoose') ; 
var views = require('koa-views') ;
var dbUrl = 'mongodb://localhost/movie' ;
var fs = require('fs') ; 
mongoose.connect(dbUrl) ; 
//models loading
var models_path = __dirname + '/app/models' ; 
var walk = function(path){
    fs
        .readdirSync(path)
        .forEach(function(file){
            var newPath = path + '/' + file ; 
            var stat = fs.statSync(newPath) ;

            if(stat.isFile()){
                if(/(.*)\.(js|coffee)/.test(file)) {
                    require(newPath) ; 
                }
            }
            else if(stat.isDirectory()) {
                walk(newPath) ; 
            }
        })
}
walk(models_path) ; 
var menu = require('./wx/menu') ; 
var wx = require('./wx/index') ; 
var wechatApi = wx.getWechat() ; 
var config = wx.getConfig ; 
wechatApi.deleteMenu().then(function(){
    return wechatApi.createMenu(menu) ; 
})
.then(function(msg){
    console.log(msg) ;
})
var app = new Koa() ;
var Router = require('koa-router') ; 
var router = new Router() ; 
var game = require('./app/controllers/game') ; 
app.use(views(__dirname + '/app/views/pages' , {
    extention: 'pug'
}))
router.get('/movie' , game.guess) ; 
router.get('/movie/:id' , game.find) ; 
router.get('/wx' , wechat.hear) ;
router.post('/wx' , wechat.hear) ;

app
    .use(router.routes()) 
    .use(router.allowedMethods()) ; 

app.listen(3000) ; 
console.log('app is listening at 3000') ;


写回答

3回答

mas123

2016-09-18

//szimg.mukewang.com/57de84130001e02906590063.jpg

老师,出现了这个问题。。数据库确定连接上了,就是传不进数据库 这是什么原因啊。。

0
2
月下星尘
我也是这个问题,求解
2016-09-20
共2条回复

慕设计5937481

提问者

2016-08-10

已经解决了,在调用app.views() ,设置静态文件的路径的时候好像最后一级文件夹的名字不是views的话好像就不能渲染,之前的文件夹的布局和老师您的不一样,之后换成您这样的就可以了,真是有点奇怪!

0
0

Scott

2016-08-09

这么神奇,会不会是 jade 改为 pug 的原因,安装一个老的 jade 版本试试看呢


没有报错很奇怪,不传 params 直接 render 试试呢

0
0

7天搞定Node.js微信公众号

Koa框架、ES2015新特性、MongoDB,开发微信公众号

1742 学习 · 787 问题

查看课程