nodejs与express和ejs在ubuntu和rasbian上不同

djmepvbi  于 2023-11-17  发布在  Node.js
关注(0)|答案(1)|浏览(104)

我想在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变量中的日期

biswetbf

biswetbf1#

我在这里发现了问题。主要原因是浏览器额外抓取了favicon.ico的Web服务器。
当这对我来说并不总是一个问题时,它是,因为我还实现了一个路由,通过添加以下内容来获取当天的当前数据:

app.get('/:day', async(req, res) => {
        var dayNum = req.params.day
        var day = today();

        // decide the type and render the specific page
        if (day.type == "number" || day.type == "Number") {
            res.render('main/number', { "day": day });
        } else {
            // default page if nothing matches (fallback)
            res.render('main/index');
        }
})

字符串
如果URL中提供的参数不是favicon,插入一个检查。ico为我解决了这个问题。所以即使我还在索引页面上,浏览器也在调用这个路由。
day is not defined的错误被提出,因为我错过了插入{ day: day }的索引页在这个路线以上。所以技术上,因为favicon.ico调用我的索引页被呈现两次。第一次与正确的值和第二次没有值。

相关问题