在jade + express中打开json文件

时间:2016-04-30 10:08:43

标签: express pug

我是jade和express的新手,所以我可能没有把事情做对,我试图打开一个json文件并在我的文件中使用它的数据我得到的是一个未定义的变量,I在index.js中获取正确的内容,但不在html渲染中获取。

我使用了这里找到的解决方案,但问题仍然存在,我的变量从未被定义过。

index.js中的

router.get('/', function(req, res, next) {
    require('fs').readFile('public/data/cocktails.json', 'utf8', function (err, data) {
    if (err) throw err;
    var obj = JSON.parse(data);
});
res.render('index');
});
index.jade中的

- console.log(obj)

2 个答案:

答案 0 :(得分:1)

您的玉和路由器文件不共享变量... 我假设你正在使用express,如果是这样,你将变量传递给res.render函数。

var obj = JSON.parse(data);
res.render('index',{obj:obj});

现在可以在index.jade文件中将其作为变量obj。

进行访问
- console.log(obj)

答案 1 :(得分:-1)

你真的很亲近。您正在阅读该文件并解析JSON,但您并未将其传递给res.render。要稍微修改一下代码:

router.get('/', function(req, res, next) {
  require('fs').readFile('public/data/cocktails.json', 'utf8', function (err, data) {
    if (err) throw err;
    var obj = JSON.parse(data);

    // This is the changed line!
    res.render('index', obj);
  });
});

现在,您应该能够在Jade视图中使用public/data/cocktails.json中的数据。

另外,最后要注意的一点是:出于版权原因,Jade已重命名为Pug。如果Jade突然停止工作,请记住未来的好事!