Я работаю с NodeJS и Express, используя Express -Handlebars.
Handlebars выдает следующую ошибку при попытке визуализации шаблона:
Handlebars: доступ запрещен для разрешения свойства «имя пользователя», поскольку оно не является «собственным свойством» его родителя. Вы можете добавить опцию времени выполнения, чтобы отключить проверку или это предупреждение: Подробнее см. https://handlebarsjs.com/api-reference/runtime-options.html#options -to-control-prototype-access
По приведенной выше ссылке:
Начиная с версии 4.6.0, Handlebars по умолчанию запрещает доступ к свойствам и методам прототипа объекта контекста. Причиной являются различные проблемы безопасности, которые возникают из-за этой возможности.
Мое приложение. js содержит следующее:
const exphbs = require('express-handlebars');
const express = require('express');
// Init Express
const app = express();
// VIEW ENGINE
app.engine('handlebars', exphbs({
defaultLayout: 'main'
}));
app.set('view engine', 'handlebars');
Мой файл маршрута выбирается из MongoDB через Mon goose:
//@GET - View
router.get('/', authMiddleware, (req, res, next) => {
// Mongoose
Model.find({ user: req.user._id })
.sort({ date: -1 })
.then(model => {
res.render('/overview', { model: model })
})
.catch(err => {
if (err) throw err;
req.flash('error_msg', 'No Model Found');
})
})
модель представляет собой массив объектов
Эта проблема появилась только после того, как я начал возиться с добавлением помощников на руле. Я удалил помощников и вернулся к своим исходным настройкам конфигурации (выше) безрезультатно. Я попытался удалить папку node_modules и переустановить npm.
. Отправляется массив объектов, и я пытаюсь l oop по свойствам объектов, используя {{#each model }} помощник и ссылка на отдельные свойства с помощью {{prop1}} внутри каждого.
Согласно Handlebars, это отключение свойств proto по умолчанию ложно, и это изменение ничего не должно нарушать.
Мой вопрос:
- Я неправильно отправляю данные на руль? Если да, то как правильно (не подвергая мой сервер дырам в безопасности) отправлять данные в шаблон express -handlebars для рендеринга?
Заранее спасибо.