Node.js,Express.js不会将文件发送到客户端

时间:2017-04-12 00:01:18

标签: javascript css node.js express

我试图将gif发送到客户端以便稍后在CSS中使用。控制台日志给我找不到gif的404。它位于公共目录中。

服务器:

var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
var express = require('express');
var peopleCount = 0;


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

app.get('/', function(req, res){
    res.sendFile(__dirname + '/public/index.html');
  });

CSS

span {
            background:url('public/gif.gif');
            background-repeat:repeat-x;
            background-position:0 0;
            text-align:center;
            color:transparent;
            -webkit-background-clip:text;
            -moz-background-clip:text;
            background-clip:text;
            -webkit-text-fill-color:transparent;
            font-weight: bold;
            font-size: 20px;
    }

服务器发送index.html文件,但不是gif.gif

卢卡斯

2 个答案:

答案 0 :(得分:0)

尝试:

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

而不是

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

答案 1 :(得分:0)

对于初学者,public/gif.gif是相对参考,因此这将在<window location>/public/gif.gif处查找文件。假设您希望此引用<root>/public/gif.gif,请使用绝对引用(注意前导/):

background:url('/public/gif.gif');

此外,静态目录应绑定到app实例,并应指定调用服务器时要使用的名称:

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

在上面的示例中,当调用服务器时,项目中的__dirname + /public目录将位于/public