Express提供静态文件:不同位置的服务器和客户端

时间:2018-02-27 18:06:50

标签: javascript html express serving

我试图让我的快递服务于另一个位置的静态文件:

这是我目前的目录:

|__client
|   |__thumbnails.html
|
|__server
    |__app.js

我尝试使用app.use(express.static(path.join(__dirname, '..', 'client')));,但它根本不会提供该文件。但是,当我在path.join上使用相同的'/'获取请求时,它会发送文件。

这是我目前的代码。它工作了,感谢上帝,但我想知道是否有办法让我在没有实际发送文件的情况下提供服务。

const express = require('express');
const path = require('path');
const similar = require('./routes/similar');
const image = require('./routes/images');

const app = express();

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

app.use('/item', similar);
app.use('/thumbnail', image);

app.get('/', (req, res) => res.status(200).sendFile(path.join(__dirname, '..', 'client', 'thumbnail.html')));

module.exports = app;

2 个答案:

答案 0 :(得分:2)

您可以通过配置serve-static模块使文件成为您想要的任何内容: https://expressjs.com/en/resources/middleware/serve-static.html

从该页面开始:

var express = require('express')
var serveStatic = require('serve-static')

var app = express()

app.use(serveStatic('public/ftp', {'index': ['default.html', 'default.htm']}))
app.listen(3000)

现在,您按照定义的顺序查看放入'index'数组中的所有内容。 否则,如果您将实际文件名放在网址中,您仍然可以访问您的html文件。

答案 1 :(得分:0)

好吧,我想我弄明白了。显然你必须将html保存为索引。 Express正在寻找,但由于我没有index.html,它会跳过我的thumbnails.html。

因此将我的html重命名为index.html修复了问题。

更新: 因此,通过阅读文档,您可以通过传递选项来设置默认值。我传入了{ index: 'thumbnails.html' }作为静态的第二个参数,它提供了我的HTML。