无法在 node.js 中显示带有 EJS 文件的图像

Posted

技术标签:

【中文标题】无法在 node.js 中显示带有 EJS 文件的图像【英文标题】:Can't display an image with EJS file in node.js 【发布时间】:2020-04-15 22:34:30 【问题描述】:

我是 node.js 的新手,我只是在玩它来创建一个网站。我想在网站上显示一张图片,该图片与我的 ejs 文件位于同一目录中,但它没有显示出来。我做错了什么吗?谢谢!

后端代码

const express = require('express')

//Init App
const app = express();

//Load view engine
app.set('view engine','ejs');

// Home route
app.get('/', function(req,res)
res.render('index.ejs');
);

app.listen(3000, function()
console.log('Server started in port 3000...');
);

ejs文件内容:

<!DOCTYPE html>
<html>
<head>
  <title>Hello World!</title>
</head>
<body>
  <h1>Picture test</h1>
  <img src="/Users/aray/Documents/Projects/Node/views/test.jpg">
</body>
</html>

项目结构为:

- Node
  - app.js
  - views
    - index.ejs
    - test.jpg

【问题讨论】:

能否给出项目的目录结构? - app.js 和文件夹视图处于同一级别。在视图目录中,我有 index.ejs 文件和 test.jpg 图片 【参考方案1】:

您必须将图像(和其他资产)放在单独的文件夹中,并使用 express.static 提供此文件夹:

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

- Node
  - app.js
  - views
    - index.ejs
  - public
    - test.jpg
<img src="test.jpg">

更多信息可以在快速文档中找到:https://expressjs.com/en/starter/static-files.html

【讨论】:

以上是关于无法在 node.js 中显示带有 EJS 文件的图像的主要内容,如果未能解决你的问题,请参考以下文章

无法让样式表与 node.js 的 ejs 一起使用

使用 Node.JS、Express 和 EJS 实现 browserify 的示例

在 node.js/express 中使用 EJS 显示图像

Node JS+Express:如何在 HTML(EJS) 中定义和使用 MySQL 数据?

我们可以在 Node JS 应用程序中使用带有 ejs(嵌入式 javascript)的 socket.io 而不是 html 页面吗?

res.render() 不渲染 ejs 文件,没有抛出错误 node.js app