首页 > 解决方案 > 解决了。Ejs 无法查找视图。在本地主机上工作,但不能在线工作

问题描述

解决了。我觉得我好笨。我用首字母大写命名文件,但给出的 ejs 文件没有首字母大写。我知道如何以及为什么,但它在 localhost 上运行完美,但 ubuntu 服务器显示“Naaa”。

当用户尝试访问站点时,我正在尝试生成视图。视图被称为“项目”,它所做的只是从数据库中渲染数据。此代码在本地主机上运行完美,但当我将其推送到服务器时不起作用。有趣的是,我在同一个目录中有 home.ejs 和 item.ejs。家正在完美呈现,但项目没有。我什至更改了项目和家庭代码以查看是否有变化,我可以使用项目代码渲染家庭,但找不到具有家庭代码的项目。

应用程序.js

// External modules
const express = require('express');
const path = require("path");

// My functions
const {getData} = require("./Database/GetData");

// middleware
const app = express();
app.use(express.static('public'));
app.use(express.json());

// view engine
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));

// Start app
app.listen(4000, console.log("Listening on port 4000"))

// Home
app.get('/', (req, res) => res.render('home'));

// If optional argument id exist, show data from that product, else show all from category
app.get('/koce/:id?', (req, res) => {
    if(req.params.id === undefined){
        getData({koce: 'all'}).then(data => {
            res.render('item',{Data: data, PathName: req.path.slice(1)})
        })
    } else {
        getData({koce: req.params.id}).then(data => {
            res.render('item', {Data: data})
        })
    }
});

项目.ejs

<div class="Products">
    <% if (Object.keys(locals.Data).length > 0) {
            if(Object.keys(locals.Data).length > 1){
                    for(let i = 0; i < Object.keys(locals.Data).length; i++) { %>
                        <div class="produkt" onclick='location.href="<%- locals.PathName + "/" + locals.Data[i].id  %>"'>
                            <h3><%- locals.Data[i].id %></h3><br>
                            <img src="<%- locals.Data[i].zdjecie %>" width="90%" height="75%" alt="<%- locals.PathName %>">
                        </div>
                <% }} else {
                        for(let i = 0; i < Object.keys(locals.Data).length; i++) { %>
                                <%- locals.Data[i].id %>
                        <% }
                }%>

    <% } else { %>

        No data

    <% } %>
</div>

应用架构

无论我尝试什么,我总是得到

无法在 Function.render (/var/www/html/test/node_modules/express/lib/application.js:580:17) 的视图目录“/var/www/html/test/views”中查找视图“项目”在 ServerResponse.render (/var/www/html/test/node_modules/express/lib/response.js:1012:7) 在 /var/www/html/test/app.js:31:17 在 processTicksAndRejections (internal/进程/task_queues.js:93:5)

这是我所有观点的地方。我被困住了:/

标签: node.jsexpressejs

解决方案


推荐阅读