express.static仅加载到index.html

时间:2017-06-03 14:29:30

标签: javascript html node.js

我正在尝试获取所有路径中可用的公共文件夹内的静态文件(images,js,css)。我只能将它们加载到index.html。 manage.html文件无法访问静态文件,我在Chrome控制台上收到404错误。

文件夹结构:

-app/  
---index.html
---management.html
---public/
------css/
------js/
------img/

server.js:

const express = require('express');
const path = require('path');

var app = express();

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

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

app.get('/management', function(req, res) {
    res.sendFile('management.html', {root: __dirname })
});

app.listen(3000);

1 个答案:

答案 0 :(得分:2)

在HTML文件中,您可能指的是静态文件的相对路径。例如:<img src="img/example.png">。此链接将基于您当前的位置。

当您的当前位置为http://example.com/(index.html)时,它会引用文件可能位于的http://example.com/img/example.png

但是当您的位置为http://example.com/management(management.html)时,它会引用http://example.com/management/img/example.png,它将返回404。

使用此文件的绝对路径将解决此问题。您可以通过在相对路径/前放置<img src="/img/example.png">来完成此操作。或者,您可以使用management.html中的相对路径,如下所示:<img src="../img/example.png">