我似乎无法弄清如何在React应用程序中从本地文件渲染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. 逐一将这些加载器添加到webpack配置中。
{
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. 我尝试将文件的直接网址添加进去
<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. 我尝试在我的webpack配置中添加mp4扩展名,就像这个人所做的那样
{
test: /\.jpe?g$|\.gif$|\.png$|\.ico|\.svg$|\.woff$|\.ttf$|.mp4$/,
loader: 'url-loader?limit=8192'
}
但是没有运气。
5. 我开始实施webpack-isomorphic-tools,但我不确定这是否是正确的方向,所以我暂停了。看起来这个人用这种方式使它工作了。(见文件)
我还注意到在 webpack 文档中的 loader conventions 下,file-loader
将加载视频文件。
这是否意味着 webpack 不会加载其他视频类型,如 .mov、.vob、.avi 等
?
资源
test
通过,webpack就不关心您如何匹配文件名。 - zerkms.
没有被转义,但我认为这不是问题的根源,即不是错误的。使用解决方案4时,您在src
中得到了什么? - dz902.
必须被转义,但这只会导致误报,目前并不是问题。 - zerkmsimport videoUrl from '/path/to/file.mp4'
,然后在JSX内部放置<video src={videoUrl} />
。 - Vikramadityaimport
语句没有起作用。它仍然给出了与解决方案2相同的错误。 - Alex Cory