Я не могу понять, как получить видео html5 для рендеринга в приложении реакции из локальных файлов. Буквально единственный способ, которым я смог заставить это работать, выглядит следующим образом:
<video src="http://www.w3schools.com/html/movie.mp4" controls />
Вот что я пробовал
1. Прямое включение пути
<video src={require('path/to/file.mp4')} controls />
который возвращает ошибку
Module parse failed: /path/to/file.mp4 Line 1: Unexpected token ILLEGAL
You may need an appropriate loader to handle this file type.
2. Добавление этих загрузчиков по одному в конфигурацию веб-пакета
{
test: /\.(mp4)$/,
loader: 'file'
// loader: 'url-loader'
// loader: 'url-loader?limit=100000'
// loader: 'file-loader'
// loader: 'file-loader?name=videos/[name].[ext]'
},
это выплевывает следующую ошибку в браузере
GET http://localhost:3000/530c2bf99dad0f857d46940b62b84946.mp4 404 (Not Found)
3. Я попытался добавить прямой URL в файл
<video src={require('http://localhost:3000/path/to/file.mp4')} controls />
но все равно ошибки:
Module not found: Error: Cannot resolve module 'http://localhost:3000/path/to/file.mp4' in path/to/file.mp4
4. Я попытался добавить расширение mp4 в конфигурацию своего веб-пакета как это сделал этот человек
{
test: /\.jpe?g$|\.gif$|\.png$|\.ico|\.svg$|\.woff$|\.ttf$|.mp4$/,
loader: 'url-loader?limit=8192'
}
но не повезло
5. Я начал внедрять webpack-isomorphic -tools, но тогда я не был уверен, что это правильное направление, поэтому остановился на нем. Кажется, у этого парня все получилось именно так. (см. файл)
Я также заметил в документации веб-пакета в разделе соглашения загрузчика, что file-loader
будет загружать видеофайлы. Означает ли это, что веб-пакет не будет загружать другие типы видео, такие как .mov, .vob, .avi, etc.
?
Если вы хотите взглянуть на код, вот репозиторий.
Ресурсы
test
. - person zerkms   schedule 07.04.2016/\.(png|jpg|jpeg|gif|svg|mp4)$/
. - person theaws.blog   schedule 07.04.2016.
не был экранирован, но я не думаю, что это причина проблемы, то есть не так. Что вы получаете вsrc
при использовании решения 4? - person theaws.blog   schedule 07.04.2016.
нужно экранировать, но это может привести только к ложным срабатываниям, что на данный момент не проблема. - person zerkms   schedule 07.04.2016import videoUrl from '/path/to/file.mp4'
, а затем внутри jsx поместите<video src={videoUrl} />
. - person Vikramaditya   schedule 07.04.2016import
не сработал. Он по-прежнему выдавал ту же ошибку, что и решение 2. - person Alex Cory   schedule 07.04.2016var x = require('path/to/video')
. Я также использовалname=videos/[name].[ext]
, может быть связано. Также убедитесь, что вы запускаете и останавливаете веб-пакет, если вы просматриваете файлы. - person Patrick Steadman   schedule 14.04.2016