EJS页面没有加载图像



我是node.js的新手,对于这个项目,我试图在ejs文件上加载图像。图像在公共文件夹中,但仍然没有在.ejs文件上显示图像。如果我调用项目与图像url为localhost:3000/public/images/bmLogo.png,则显示图像。但是如果我把url命名为src="/images/bmLogo.png">在ejs文件中,它不显示图像。有一种方法,我可以显示图像上。ejs文件?

文件夹路径

-- views
-report-template.ejs
-- public
-images
-bmLogo.png
app.js

视图文件夹包含报表模板。

.

App.js

let express = require("express");
let app = express();
let ejs = require("ejs");
let pdf = require("html-pdf");
let path = require("path");
app.use('/public/', express.static('./public'));

report-template.js

<!DOCTYPE html>
<html>
<head></head>
<body style="background-color:white; margin-top: -1.5%;">
<div>
<img src="/images/bmLogo.png" style="color:black;" alt="image name">
<p>MIS Pictures</p>
</div>
</body>
</html>

app.js中有这段代码:

app.use('/public/', express.static('./public'));

路径将是/public/images/bmLogo.png,而不是/images/bmLogo.png因此,对于src属性,您可以将其更改为/public/images/bmLogo.png。或者,你可以用app.use(express.static("public"))代替app.use('/public/', express.static('./public'));

我遇到了类似的问题,按照这些步骤,仍然没有得到任何地方。在尝试了所有方法后,我将文件从。jpg更改为。png,并开始工作。

(这不是一个技术上的回答,但我想把这个放在那里,如果其他人有这个问题,我没有留下评论的声誉)

正如我所测试的,一般node.js使用"path.join()"one_answers"process.cwd()";函数定义文件的路径是最佳实践。您可以提供静态文件,例如中间件:

app.use(express.static(path.join(process.cwd(), "/images")));

这个中间件服务于"/images"文件夹中。process.cwd()功能是使路径从根文件夹开始。在我的渲染部署中,它像预期的那样工作。

最新更新