node.js - 解决了。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>
应用架构
- 根
- 应用程序.js
- 上市
- 数据库
- 意见
- 主页.ejs
- 项目.ejs
无论我尝试什么,我总是得到
无法在 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)
这是我所有观点的地方。我被困住了:/
解决方案
推荐阅读
- javascript - 如何将 componentDidMount() 和 componentWillUnmount 转换为 useEffect()?
- python - 使用 Python 访问命令提示符以实现自动化流程
- windows - 如何在没有 anaconda-clean 的情况下彻底清除 anaconda?
- java - 停止 UI 方法,直到异步任务完成
- kubernetes - configmap.yaml 和 job.yaml 是什么?
- android - CoroutineScope 和 withContext 之间的 Kotlin 区别
- vb.net - 如何使用 vb.net 在 Windows 窗体中加密连接字符串,以便将其分发到其他机器
- json - Azure 数据工厂中有效 json 的“缺少列”错误消息
- javascript - Vue i18n 中链接区域设置消息的参数化格式
- linux - 不在家庭网络上时无法解析 localhost