gpt4 book ai didi

javascript - 中间件 EJS 不呈现任何 JPG 文件

转载 作者:行者123 更新时间:2023-11-30 13:54:06 24 4
gpt4 key购买 nike

我正在尝试使用 EJS 开发一个非常简单的 NodeJS 服务器。这个小服务器必须呈现一个小的 HTML 页面,里面只有一行文本和一个 jpg 文件。

一切正常,但 jpg 文件:服务器未加载此文件。

在代码中我已经指定了 express.static 路径但无事可做。

我在本地(在我的 2 台计算机上)尝试过,在我家里,一切正常。在远程服务器上尚未加载 jpg。我尝试了 2 个不同提供商的 2 个不同服务器,但结果是一样的。

这是我的 image.js 文件

const http = require("http")
var url = require("url")

const express = require("express");
const appExpress = express();
const router = express.Router();
const application_root = __dirname;
const application_port = 5000


appExpress.engine("html", require('ejs').renderFile);
appExpress.use("/", router);

appExpress.use(express.static(application_root + "/public"));


appExpress.get("*", function (req, res, next) {
res.render((application_root + "/public/indice.html"), {})
next();
});


// *********** CARICAMENTO PAGINA PRINCIPALE *************
function caricaPagina(res, tipologia_domande) {
res.render((application_root + "/public/indice.html"), {})
}



appExpress.listen(application_port, (req, res) => {
console.log(`Listening on port ${application_port}`);
})

这是我的 index.html 文件

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta charset="UTF-8">

<title>Prova caricamento immagine</title>
</head>

<body>
<div><img src="public/images/Sfondi/Slider.jpg"></div>
Testo di prova per caricamento pagina
</body>

</html>

如您所见,该项目非常非常简单且很小,但我对此非常着迷:-(

感谢任何人都会帮助我:-)

* 更新 *

我试着运行这段代码

appExpress.get('/', (req, res) => res.sendFile(application_root + '/public/images/Sfondi/Slider.jpg'));

此代码没问题,图像已正确加载。所以这不是路径问题而是html加载问题。html和图像文件是否存在res.render()问题?

* 更新 2 *

好的,情况是这样的:如果我使用此代码(使用 sendFile 函数),中间件加载 html 页面 加载图像但不执行 html 页面内的 javascript 代码。

res.sendFile(path.join(__dirname + "/public/indice.html"), {path_image:path_image})

如果我选择使用此代码 (res.render),中间件将在 html 页面内执行 javascript,但不会加载图像。

res.render((application_root + "/public/indice.html"), {path_image:path_image})

有人能解决这个令人难以置信的问题吗?我阅读了所有网络,但似乎只有我有这个问题。

非常感谢:-)

最佳答案

您直接在主路由上提供公共(public)文件夹,因此您的图像将无法通过 http://yourserver/public/images/... 访问,而是通过 http 访问://yourserver/images/.

我不会保留它,因为对于每个请求,Express 都必须检查本地文件夹是否存在文件。将文件服务移动到/public 是有意义的:

appExpress.use("/public", express.static(application_root + "/public/"));

关于javascript - 中间件 EJS 不呈现任何 JPG 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57628365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com