Экспресс-обслуживание статического файла: сервер и клиент в разных местах
Я пытаюсь заставить мой экспресс обслуживать статические файлы, которые находятся в другом месте:
Это текущий каталог у меня есть:
|__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 ответа
Вы можете создать файл так, как вам нравится, с помощью конфигурации модуля 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-файлу, если вы введете фактическое имя файла в URL.
Ладно, думаю, я понял это. Таким образом, очевидно, вы должны сохранить HTML как индекс. Экспресс ищет это, но так как у меня нет index.html, он пропускает мой thumbnails.html.
Поэтому переименование моего html в index.html решило проблему.
ОБНОВЛЕНИЕ: Итак, читая документацию, вы можете установить значение по умолчанию, передав опции. Я прошел в { index: 'thumbnails.html' }
в качестве второго аргумента для статического, и он служит моим HTML.