哈巴狗迭代:无法读取未定义的属性“长度" [英] Pug iteration: Cannot read property 'length' of undefined
本文介绍了哈巴狗迭代:无法读取未定义的属性“长度"的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在js文件中包含以下数据:
I am having the following data in js file:
let data =[
{id:1,type:"action"},
{id:2,type:"comedy"}
];
并尝试使用哈巴狗模板打印
and trying to print it using pug template
doctype html
html
head
title= title
link(rel='stylesheet', href='stylesheets/style.css')
body
table
tr
th Id
th Type
each post in data
tr
td #{post.id}
td #{post.type}
block content
我在每个帖子行都收到无法读取未定义的属性'length'的未定义属性"的错误消息
I get the error as "Cannot read property 'length' of undefined" at the each post line
app.js:
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
let data =[
{id:1,type:"action"},
{id:2,type:"comedy"}
];
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
index.js:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Movies' });
});
module.exports = router;
推荐答案
尝试一下:
index.js:
let data =[
{id:1,type:"action"},
{id:2,type:"comedy"}
];
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Movies', data }); // you forgot passing the data array
})
另一个解决方案是:
在 app.js
中,您可以执行以下操作:
In the app.js
, you could do this:
var app = express();
let data =[
{id:1,type:"action"},
{id:2,type:"comedy"}
];
app.locals.data = data; //added
现在,您可以访问应用程序内渲染的模板中的局部变量,这意味着您无需在 render()
方法中传递此 data
Now you can access local variables in templates rendered within the application which mean you don't need to pass this data
in the render()
method
这篇关于哈巴狗迭代:无法读取未定义的属性“长度"的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文