【问题标题】:Laravel webpack unable to locate Mix fileLaravel webpack 找不到 Mix 文件
【发布时间】:2021-08-24 17:05:51
【问题描述】:

尝试使用版本控制,但出现此错误。

Unable to locate Mix file: /core/public/css/app.css. (View: C:\laragon\www\project\core\resources\views\master.blade.php)

我的 webpack.mix.js 文件

const mix = require('laravel-mix');


mix.js('resources/js/app.js', 'public/js').extract(['vue']);
   mix.sass('resources/sass/app.scss', 'public/css');

   if (mix.inProduction()) {
      mix.version();
  }

标题

<link href="{{ mix('/core/public/css/app.css', '/core/public') }}" rel="preload" as="style"
    onload="this.onload=null;this.rel='stylesheet'">
<script src="{{ mix('/core/public/js/manifest.js'), '/core/public'}}"></script>
<script src="{{ mix('/core/public/js/vendor.js'), '/core/public' }}"></script>
<script src="{{ mix('/core/public/js/app.js'), '/core/public' }}"></script>

mix-manifest.json 输出

{
    "/js/app.js": "/js/app.js?id=170c03d22dcc6f5e5936",
    "/css/app.css": "/css/app.css?id=3306ee8f312fb58dd115",
    "/js/manifest.js": "/js/manifest.js?id=41f053ba9a94d81b39f8",
    "/js/vendor.js": "/js/vendor.js?id=cf78339b219ecdecb320"
}

项目内的文件结构是

core
└───public
│   │   mix-manifest.json
│   │
│   └───js
│       │   app.js
│       │   manifest.js
│       │   vendor.js
│       |
|       css
|       |   app.css 
|       |
|
|
|
|''' 
└───webpack.mix.js
|...

像这样指向 javascript 文件

<script src="{{ mix('/js/app.js') }}"></script> 

给我一​​个错误

The Mix manifest does not exist. (View: C:\laragon\www\project\core\resources\views\master.blade.php) (View: C:\laragon\www\project\core\resources\views\master.blade.php)

尝试使用原始 URL 会出现此错误

<script src="/css/app.css"></script>

GET https://project.test/css/app.css net::ERR_ABORTED 404 (Not Found)

上述文件位于 /core/public/css 文件夹内,但指向不正确。

【问题讨论】:

    标签: laravel vue.js webpack


    【解决方案1】:

    您的问题是您将根文件夹添加到您的mix 路径...不要这样做,它是相对于您的root/public...

    你应该是这样的:

    <link href="{{ mix('/css/app.css') }}" rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'">
    <script src="{{ mix('/js/manifest.js') }}"></script>
    <script src="{{ mix('/js/vendor.js') }}"></script>
    <script src="{{ mix('/js/app.js') }}"></script>
    

    阅读更多关于它的信息here

    【讨论】:

    • 我收到一个错误如果我这样尝试,Mix 清单不存在。
    • 分享错误,但也可以尝试原始 url 而不是 mix,所以尝试&lt;script src="/js/manifest.js"&gt;&lt;/script&gt;(每个),看看是否有效。
    • 更新了问题,使用它而不混合版本控制将不起作用。
    【解决方案2】:

    这让它工作了

     <link href="{{ mix('css/app.css', 'core/public') }}" rel="preload" as="style"
            onload="this.onload=null;this.rel='stylesheet'">
        <script src="{{ mix('js/app.js', 'core/public') }}" defer></script>
    

    解释一下,第二个参数指向mix-manifest.json文件所在的位置。

    【讨论】:

    • 我明白了,你的问题是你移动了文件,而不是root/public 你有root/core/public 对吗?不要那样做,不需要重新创建轮子,因为 laravel 在没有这些更改的情况下运行良好。
    猜你喜欢
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2020-02-07
    • 2021-08-25
    • 2020-01-28
    • 1970-01-01
    • 2018-07-29
    相关资源
    最近更新 更多