CR7*_*CR7 5 php laravel webpack
我正在尝试在本地系统中运行 Laravel 应用程序。我已经关注了https://gist.github.com/hootlex/da59b91c628a6688ceb1链接。我运行命令php artisan serve命令,当我浏览它时,会产生错误
PHP Fatal error: Uncaught Exception: Unable to locate Mix file: /css/vendor.css. Please check your webpack.mix.js output paths and try again. in /var/www/html/laravel-app/app/helpers.php:439
Run Code Online (Sandbox Code Playgroud)
在helpers.php的指定行,它有
if (! isset($manifest[$path])) {
throw new Exception(
"Unable to locate Mix file: {$path}. Please check your ".
'webpack.mix.js output paths and try again.'
);
}
Run Code Online (Sandbox Code Playgroud)
公共/混合-manifest.json
{
"/mix.js": "/mix.js"
}
Run Code Online (Sandbox Code Playgroud)
我无法解决它。请帮忙。谢谢
ika*_*k90 13
这发生在我身上,在花费了相当多的时间和精力之后,我确实设法弄清楚发生了什么以及如何解决它。
发生的情况如下:
webpack.mix.js
您可以使用您希望分别发布已编译的 JS 和 CSS 文件的目标来更新您的文件。mix.js('resources/js/app.js', 'public/js').vue();
Run Code Online (Sandbox Code Playgroud)
npm run dev
当您运行或时,Mix 会编译生成的 CSS 和 JS 文件并将其存储在各自的目标文件夹中npm run watch
。laravel-app (Your laravel app root folder)
\public
\css
\app.css
\js
\app.js
Run Code Online (Sandbox Code Playgroud)
Unable to locate Mix file: /js/app.js
(or)
Unable to locate Mix file: /css/app.css
Run Code Online (Sandbox Code Playgroud)
不过,在“未捕获的异常”屏幕上值得注意的是,Laravel 默认情况下会尝试在localhost:8080
. 暗示 Laravel 正在分别在以下位置查找文件:
localhost:8080\css\app.css
(and)
localhost:8080\js\app.js
Run Code Online (Sandbox Code Playgroud)
因此,如果您的主机名或端口不是localhost:8080
,Laravel 将无法找到您的文件。例如,如果您使用 Valet,您的默认 URL 将变为laravel-app.test
laravel-app 是应用程序根文件夹的名称。
但是,有一种方法可以解决这个问题。它直接出现在Laravel 的文档中。
为了使用自定义混合基本 URL,您需要更新config\app.php
文件以添加以下配置值来设置混合 URL:
'mix_url' => env('MIX_ASSET_URL', 'localhost'),
Run Code Online (Sandbox Code Playgroud)
mix_url
在文件中设置配置选项后app.php
,您现在应该能够通过在文件MIX_ASSET_URL
中添加密钥.env
并将其设置为空白来操作它,以便它\public\js\app.js
分别指向项目目录中的 和 \public\css\app.css 。
MIX_ASSET_URL=""
Run Code Online (Sandbox Code Playgroud)
这为我解决了。希望它也适合你。让我知道事情进展如何。干杯!
您正在加载的刀片文件显然有mix('/css/vendor.css')
调用。您可以注释掉这一行或安装 npm 然后构建您的资产。
您的清单文件没有,/css/vendor.css
但是如果您检查刀片文件 ( views
),您会发现您正在调用mix('/css/vendor.css')
. 因此,如果您找到并注释掉这一行,您的问题将得到解决。
理想情况下,mix()
用于加载由 webpack 构建的资产。然后它会为您处理版本控制字符串。文档中详细说明了如何使用混合。我将避免在这里讨论这个问题。
您已经通过运行npm run dev
或类似的命令构建了您的资产。然后清单文件不包含这些资产映射。而且您的public
目录也没有这些资产。然后可以安全地假设您可以mix
从刀片 ( views
) 文件中删除这些调用。
如果您的public
目录中内置了资产,那么您可以按assets
功能加载这些资产。
最后,在将资产加载到您的网站之前,您应该首先了解您的资产。我的想法是,您不知道这些资产的来源,因此您不应该首先加载它们。
归档时间: |
|
查看次数: |
42427 次 |
最近记录: |