我想在Node.js上用Express和EJS构建一个小日历。我在笔记本电脑(Ubuntu)上启动,一切都运行得很好。
之后,我克隆到我的乌藨子项目,将服务于这个小的Web服务器在我的家庭网络。但它抛出一个错误,即使“数据”内的对象,它抱怨是存在的。
index.ejs:
<!DOCTYPE HTML>
<html>
<head>
<title>Little Advent Calendar</title>
<link rel="stylesheet" type="text/css" href="/main.css" />
</head>
<body class="background">
<div class="center">
<section >
<h2 class="title" align="center"> <%= day %>. Dezember</h2>
<p class="btn-style" align="center">
<a href="/<%= day %>" type="button" class="a-btn">Öffnen</a>
</p>
</section>
</div>
</body>
</html>
字符串
server.js(运行Web服务器):
...
app.use(express.static(path.join(__dirname, '/public/')));
app.set('view engine', 'ejs');
app.use(express.urlencoded({ extended: false }));
app.use(methodOverride('_method'));
app.get('/', async(req, res) => {
let date_ob = new Date();
let day = date_ob.getDate();
res.render('main/index', {"day": day});
})
app.listen(port);
型
在两台机器上,网页看起来是一样的。包括日期(天)通过从server.js传递的JSON对象正确显示。
但在我的乌藨子它抛出以下错误,它没有完全崩溃,但似乎有什么是错的:
ReferenceError: /home/pi/Desktop/advent-calendar/views/main/index.ejs:10
8| <div class="center">
9| <section >
>> 10| <h2 class="title" align="center"> <%= day %>. Dezember</h2>
11| <p class="btn-style" align="center">
12| <a href="/<%= day %>" type="button" class="a-btn">Öffnen</a>
13| </p>
day is not defined
at eval ("/home/pi/Desktop/advent-calendar/views/main/index.ejs":12:26)
at index (/home/pi/Desktop/advent-calendar/node_modules/ejs/lib/ejs.js:703:17)
型
在Node.js中为Raspberry和Ubuntu提供的JSON有什么区别吗?
的数据
这就是网页的外观。它明确地打印来自server.js的day变量中的日期
1条答案
按热度按时间biswetbf1#
我在这里发现了问题。主要原因是浏览器额外抓取了
favicon.ico
的Web服务器。当这对我来说并不总是一个问题时,它是,因为我还实现了一个路由,通过添加以下内容来获取当天的当前数据:
字符串
如果URL中提供的参数不是favicon,插入一个检查。ico为我解决了这个问题。所以即使我还在索引页面上,浏览器也在调用这个路由。
day is not defined
的错误被提出,因为我错过了插入{ day: day }
的索引页在这个路线以上。所以技术上,因为favicon.ico调用我的索引页被呈现两次。第一次与正确的值和第二次没有值。