如何修复 laravel 混合中的错误 "Module parse failed: Unexpected character"

How to fix Error "Module parse failed: Unexpected character" in laravel mix

我正在使用 laravel-mix in Laravel8 编写反应代码然后编译。

正常使用一切正常。但是当我想使用下面的行将 mp4 文件加载到 react 中时:

 require(`./files/${mp4file}`)

我在使用 laravel-mix 编译期间加载 mp4 文件时收到此错误 npm run dev:

ERROR in ./resources/files/5.mp4 1:0
Module parse failed: Unexpected character '' (1:0)
You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
(Source code omitted for this binary file)

webpack compiled with 1 error

注意: 我在 create-react-app 中有这个程序,它在 buildrun 期间运行良好,没有问题。

我该如何解决这个错误?

一天后我找到了解决方案,

您需要构建自定义加载器。为此,我将此行添加到 webpack.mix.js:

mix.extend("addWebpackLoaders", (webpackConfig, loaderRules) => {
    loaderRules.forEach((loaderRule) => {
        webpackConfig.module.rules.push(loaderRule);
    });
});

mix.addWebpackLoaders([
    {
        test: /\.(mp4|svg|jpe?g|gif)$/,
        use: [
            { 
                loader: 'file-loader',            
            }
          ]
    }
]);

通过这种方式,您已经为 mp4svggif 等文件添加了 file-loader。之后你可以 运行 npm run dev.

这个 link 帮助了我: https://github.com/laravel-mix/laravel-mix/issues/145