Express 不加载带有绝对路径的图片

威廉·琼斯

我正在制作一个 NodeJS 应用程序,我有一个 div 元素,在外部 CSS 文件中设置了一个背景图像。CSS 文件本身工作得很好,没有问题。此外,当我在没有 Node 的情况下加载 HTML 时,背景图像显示得很好。

CSS:

#schoolInfo {
  display: block;
  background-image: url('slide1pic.jpg');
  background-repeat: no-repeat;
  width: 100%;
  height: 100%;
  background-size: cover;
}

应用程序.js:

var express = require('express');
var app = express();
var serv = require('http').Server(app);
var io = require('socket.io')(serv);
var path = require('path');

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended:false}));
app.use(bodyParser.json());

app.use(express.static('client/home'));

app.post('/createSchool', function(req, res) {

  app.use(express.static('client/school'));
  res.sendFile(path.join(__dirname, '/client/school/index.html'));

  io.emit('updateSchool', response);
});

serv.listen(3000);
console.log("Server started on localhost://3000");

很明显,我使用的是绝对 URL,所以我不知道为什么 express 找不到它。我在命令提示符(这是我运行服务器的地方)或浏览器的控制台中没有收到任何错误。

我需要在我的 app.js 中添加一些东西吗?任何帮助将不胜感激。

卡洛斯·贾菲特·内托

您在提供文件的 url 中缺少路由:

app.use('/', express.static('client/home'));

路径“/”是从你开始你的节点工艺相对的。

如果你的目录中有一个 index.html 文件,那么你可以在那里有一个图像文件夹,你的 express.static() 看起来像这样:

app.use('/images', express.static('client/home'));

在您的html文件中,您只需要输入:

<img src="images/file.png" />

然后你只需要在以下位置启动你的节点进程:

client\home > node server.js

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章