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

Express Serving a Static File: Server and Client in Different Locations

我正在尝试让我的 express 提供位于另一个位置的静态文件:

这是我当前的目录:

|__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;

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

所以将我的 html 重命名为 index.html 解决了这个问题。

更新: 因此,通读文档,您可以通过传入选项来设置默认值。我传入 { index: 'thumbnails.html' } 作为 static 的第二个参数,它服务于我的 html.

您可以通过配置 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' 数组中的任何内容都会按照您定义的顺序进行查看。 否则,如果您将实际文件名放在 url.

中,您仍然可以访问 html 文件