Php 未捕获异常:找不到混合文件

Php 未捕获异常:找不到混合文件,php,laravel,webpack,Php,Laravel,Webpack,我正在尝试在本地系统中运行laravel应用程序。我已经跟踪了链接。我运行命令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.

我正在尝试在本地系统中运行laravel应用程序。我已经跟踪了链接。我运行命令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
在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.'
        );
    }
public/mix manifest.json

{
  "/mix.js": "/mix.js"
}

我弄不清楚。请帮忙。谢谢

您正在加载的刀片文件显然有
混合('/css/vendor.css')
调用。您可以注释掉这一行或安装npm,然后构建资产

你的清单文件没有
/css/vendor.css
,但是如果你检查你的刀片文件(
视图
),你会看到你正在调用
混合('/css/vendor.css')
。因此,如果您找到并注释这一行,您的问题将得到解决

理想情况下,
mix()
用于加载webpack生成的资产。然后,它将为您处理版本控制字符串。文档中详细说明了如何使用。我不想在这里讨论这个问题

您已经通过运行
npm run dev
或类似命令构建了资产。然后清单文件不包含这些资产映射。而您的
public
目录也没有这些资产。然后可以安全地假设您可以从刀片(
视图
)文件中删除这些
混合
调用

如果在
public
目录中构建了资产,则可以通过
assets
功能加载这些资产


最后,在将资产加载到站点之前,您应该首先了解它们。我认为您不知道这些资产来自何处,因此不应该首先加载它们。

尝试运行
npm install
,然后构建资产,或者
npm run dev
或者
npm run watch
,取决于您使用的内容。

检查
package.json
文件以获取用于生成脚本和样式的命令,通常默认情况下,您将有:
npm run dev
。您可能需要运行以下程序:

  • npm重建节点sass
  • npm运行开发
    npm运行监视

这件事发生在我身上,在花费了相当多的时间和精力后,我确实设法弄清楚发生了什么,以及如何解决它

下面是发生的情况:

  • webpack.mix.js
    文件更新为您希望分别发布编译后的js和CSS文件的目标
  • 当您运行
    npm-run-dev
    npm-run-watch
    时,Mix编译因此生成的CSS和JS文件并将其存储在各自的目标文件夹中
  • 当您在浏览器中使用(如Valet)打开应用程序时,Laravel会弹出以下错误消息:
不过,在未捕获异常屏幕上值得注意的是,默认情况下,Laravel会尝试在
localhost:8080
上查找文件。暗示Laravel分别在以下位置查找文件:

localhost:8080\css\app.css
(and)
localhost:8080\js\app.js
因此,如果您的主机名或端口不是
localhost:8080
,Laravel将无法找到您的文件。例如,如果您正在使用Valet,您的默认URL将成为
laravel app.test
,其中laravel app是应用程序根文件夹的名称

但是,有一种方法可以解决这个问题。它直接向我们展示

解决方案(TL;DR) 为了使用自定义混合基本URL,您需要更新
config\app.php
文件,以添加以下用于设置混合URL的配置值:

'mix_url' => env('MIX_ASSET_URL', 'localhost'),
app.php
文件中设置了
mix_url
config选项后,您现在应该可以通过在
.env
文件中添加
mix_-ASSET_url
键并将其设置为空来操作它,使其分别指向
\public\js\app.js
和\public\css\app.css,在项目目录中

MIX_ASSET_URL=""

这为我解决了问题。希望它也能为你的健康服务。让我知道怎么回事。干杯

运行命令生成器更新您是如何完成此步骤的?>从git provider拉取Laravel/php项目。我拉取了一个用php开发的项目。LaravelI执行了commad composer更新,但显示了相同的错误。错误消息清楚地显示了缺少的内容。前端是建立在这个项目内的网页。检查网页包的要求。在
webpack.mix.js
中,您将看到一个路径指定给
/css/vendor.css
您的文件夹中是否缺少此文件?并生成了您的资产
npm-run-dev
能否显示
mix-manifest.json
文件?它应该在您的
public
目录中。请参阅,您的清单文件没有
/css/vendor.css
,但如果您检查刀片文件(视图),您将看到您正在调用
mix('/css/vendor.css')
。所以,如果你找到这一行并加以评论,你的问题就会得到解决。是的,你已经完全正确了。在其中一个刀片文件中,有css/vendor.css、css/app.css、js/vendor.js。。。那些台词是干什么的?如果我评论这些行会有什么问题吗?更新了答案。
localhost:8080\css\app.css
(and)
localhost:8080\js\app.js
'mix_url' => env('MIX_ASSET_URL', 'localhost'),
MIX_ASSET_URL=""