Я хочу служить index.html
и /media
подкаталогом как статические файлы. Индексный файл должен обслуживаться как по адресу, так /index.html
и по /
URL.
у меня есть
web_server.use("/media", express.static(__dirname + '/media'));
web_server.use("/", express.static(__dirname));
но вторая строка, очевидно, обслуживает все __dirname
, включая все файлы в нем (не только index.html
и media
), что я не хочу.
Я тоже пробовал
web_server.use("/", express.static(__dirname + '/index.html'));
но доступ к базовому URL /
затем приводит к запросу web_server/index.html/index.html
(двойной index.html
компонент), который, конечно же, не выполняется.
Любые идеи?
Кстати, я не смог найти абсолютно никакой документации в Express по этой теме ( static()
+ ее параметры) ... разочарование. Ссылка на документ также приветствуется.
express.static()
он обрабатываетсяserve-static
промежуточным ПО пакета. вы можете найти его документы на npmjs.com/package/serve-static или github.com/expressjs/serve-static .Ответы:
express.static()
ожидает, что первым параметром будет путь к каталогу, а не имя файла. Я бы предложил создать еще один подкаталог, содержащий вашindex.html
и использовать его.Обслуживание статических файлов в документации Express или более подробной
serve-static
документации , включая поведение по умолчаниюindex.html
:источник
express.static
ожидается, что один параметр будет path ....Если у вас есть эта настройка
Тогда это должно получить то, что вы хотели
Трюк покидает эту линию как последний запасной вариант
Что касается документации, так как Express использует промежуточное программное обеспечение для подключения, я обнаружил, что проще взглянуть на исходный код подключения напрямую.
Например, эта строка показывает, что index.html поддерживается https://github.com/senchalabs/connect/blob/2.3.3/lib/middleware/static.js#L140
источник
Application.configure()
был задокументирован как устаревший в 3.x и удален в 4.x. Смотрите ответ ChrisCantrell для обновленного примера.__dirname
? Какова его ценность?В новейшей версии Express «createServer» устарел. Этот пример работает для меня:
источник
__file__
который вы используете сos.path.dirname(os.path.realpath(__file__))
public/teams/logo.png
?res.sendFile
иexpress.static
оба будут работать для этогоГде
public
находится папка, в которой находится код на стороне клиентаКак предложено на @ATOzTOA и осветляют @Vozzie ,
path.join
принимает пути присоединиться в качестве аргументов, то+
передает один аргумент в пути.источник
path.join
принимает пути для объединения в качестве аргументов,+
передает единственный аргумент пути.path.join(public + 'index.html')
вpath.join(public, 'index.html')
и в то время как у него, изменение__dirname + "/public/"
вpath.join(__dirname, 'public')
источник
источник
используйте ниже внутри вашего app.js
(имя_папки - это папка, в которой есть файлы) - помните, что доступ к этим ресурсам осуществляется напрямую через путь к серверу (то есть http: // localhost: 3000 / abc.png (где abc.png находится внутри папки имя_папки)
источник