我是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)
答案 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突然停止工作,请记住未来的好事!