Открыть файл json в Jade + express

I’M new to jade and express so I might not be getting things right, i’m trying to open a json file and use its data in my file by all I get is an undefined variable, I do get the right content in the index.js, но не в отрисовке html.

Я использовал решение, найденное здесь, но проблема остается той же, моя переменная никогда не определена.

в индексе.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');
});

в индексе.яшма

- console.log(obj)

2 ответа

  1. Jade и router не имеют общих переменных…
    Я предполагаю, что вы используете express, если это так, вы передаете переменную в res.функция визуализации.

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

    теперь он доступен в индексе.файл jade в качестве переменной obj.

    - console.log(obj)
    
  2. Вы действительно близки. Вы читаете файл и анализируете 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);
      });
    });
    

    Теперь вы можете использовать данные public/data/cocktails.jsonв своем представлении Jade.

    Кроме того, последнее, что следует отметить: Jade был переименован в Pug по причинам авторского права. Хорошая вещь, чтобы иметь в виду на будущее, если Джейд вдруг перестает работать!