Mix 清单存在时不存在

The Mix manifest does not exist when it does exist

对于我的管理面板,我提取了所有资产,包括 manifest-json.jsmix.setPublicPath(path.normalize('public/backend/'))

所有文件都正确添加到后端文件夹,manifest-json.js 文件如下所示:

{
    // all correct here
    "/js/vendor.js": "/js/vendor.js",
    "/js/app.js": "/js/app.js",
    "/css/app.css": "/css/app.css",
    "/js/manifest.js": "/js/manifest.js"
}

问题是当使用

{{ mix('backend/css/app.css') }}

在我的 blade-files 中,它在 public/manifest-json.js 中查找而不是在 backend/manifest-json.js 中查找。

如何确保使用正确的 manifest-json.js 文件?

我遇到的问题是 mix()-helper 函数默认在 /public/manifest-json.js 中查找 manifest-json 文件,所以如果您将该文件存储在任何其他目录级别然后它会抛出那个错误。

假设 manifest-json 文件存储在 public/app/manifest-json.js,那么对于位于 public/app/css/app.css 的文件,您将使用:

<link rel="stylesheet" href="{{ mix('css/app.css', 'app') }}">

mix()-helper 函数允许第二个参数,清单文件的目录。只需在此处指定它,它将使用正确的清单文件。

我在将 laravel 项目部署到服务器后遇到了同样的异常。它在 localhost 上工作得很好,但经过大量研究后我找到了解决方案。如果您在服务器上遇到此异常,则必须将 public 路径绑定到 public_html

只需转到 app/Providers 下,您会找到 AppServiceProvider 文件并在 boot() 方法使绑定如下。

   $this->app->bind('path.public', function() {
        return base_path().'/../public_html';
    });

共享主机laravel 5.6中测试: 在完成标准级别后,如解释 ; 需要两个级别: 在 app/Providers/AppServiceProvider.php:

$this->app->bind('path.public', function() {
    return realpath(base_path().'/../public_html');
});

并在 public_html 文件中生成 .htaccess 文件,内容为:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/ [L]
</IfModule>
<IfModule !mod_rewrite.c>
  ErrorDocument 404 /index.php
</IfModule>

来源:here 此文件在某些​​情况下变化最大。

就是这样,解决了我的问题

我解决了我的问题运行这个命令

npm install

然后

npm run production

谢谢。

我和发问者有同样的问题:manifest does not exist 为了解决这个问题,我所做的是 运行 2 个命令如下:

npm install

然后

npm run dev

现在错误已解决。 yippi.

我对 Laravel 包有同样的问题,它的资产没有发布:

这解决了我的问题:

php artisan vendor:publish --tag=telescope-assets --force

来源: https://github.com/laravel/telescope/issues/136 https://github.com/laravel/telescope/issues/250

我找到了新的解决方案

问题是 mix manifest 对吧? 所以只需重定向到混合清单功能。例如,您有:

{{ style(mix('css/backend.css')) }}

只需将您的代码更改为

{{ style('css/backend.css') }}

对我有用

我在共享主机上遇到了问题,我无法在其中 运行 npm 命令。然后我用了最简单的方法。在 /vendor/laravel/.../Foundation/Mix.php 替换

i$manifests[$manifestPath] = json_decode(file_get_contents($manifestPath), true);   

$manifests[$manifestPath] = json_decode(file_get_contents('https://your-domain.com/mix-manifest.json'), true);

不推荐,但有效。您可以将其用作最后一次尝试。

尝试以下命令:

npm install

npm run dev

在共享主机环境中,删除混音,例如{!!脚本(混合('js/manifest.js'))!!}

应该改为

{!!脚本('js/manifest.js') !!}

这实际上对我有用

我在尝试访问登录和注册页面时将 laravel 项目部署到(共享)服务器后遇到同样的异常。它在本地机器上运行良好。

我保持文件和文件夹结构与本地环境相同(本地 public 文件夹中的所有文件都在服务器上的 public_html 文件夹中)。

上面提到的解决方案似乎有效。适应我的文件和文件夹结构我将以下代码添加到 AppServiceProvider 文件和内部 boot() 方法。

$this->app->bind('path.public', function() {
return realpath(base_path().'/public_html');

});

现在唯一的问题是 CSS 登录、注册和仪表板页面乱七八糟。我是 Livewire 的新手,我不知道如何解决这个问题。

我遇到了同样的错误

因为当我运行

npm install
npm run dev

我遇到了一些错误。

当我更新我的 nodejs 版本时,它被修复了。

我只是发帖,也许有人需要它。 对我来说,当我更改 blade 文件 css 和 js 指向的路径时,它就起作用了。如下图:

在我的 blade 中是这样的:

<link rel="stylesheet" href="{{ mix('dist/css/app.css') }}">

我将 MIX 更改为 ASSET 为:

<link rel="stylesheet" href="{{ asset('dist/css/app.css') }}">

同样在 JS 文件上:

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

如果对每个人来说都是一样的,在我的情况下 laravel-mix 似乎没有安装,所以没有更改我刚刚安装的 laravel-mix 的任何文件 运行:

npm install laravel-mix@latest --save-dev

我改resources/layouts/guest.blade.php和resources/layouts/app.blade.php

    <!-- Styles -->
    <link rel="stylesheet" href="{{asset('css')}}/app.css">

    <!-- Scripts -->
    <script src="{{asset('css')}}js/app.js"></script>

和resources/css和resources/js复制我的public文件夹

为了将您的 public 路径绑定到 public_html,在文件 index.php 中添加这 3 行:

$app->bind('path.public', function() {
   return __DIR__;
});

我在 共享主机

上工作

有3种方法可以解决,上面同事说的我总结一下:

问题是因为您在视图中使用了 mix()。

<link rel="stylesheet" href="{{  mix('dist/css/app.css')  }}">

解决方案 1 改成这样。

<link rel="stylesheet" href="{{  asset('dist/css/app.css')  }}">

解决方案 2 如果您没有根访问权限:

修改App\Providers\AppServiceProvider文件,在boot()方法中添加如下内容

$this->app->bind('path.public', function() {
   return base_path().'/../public_html';
});

解决方案 3

如果您有 root 权限 运行:

npm install & npm run dev

如果您在使用 Laravel Nova 或 telescope 时遇到此问题,那么您可能真的缺少 mix-manifest 文件。您应该在 public/vendor/toolname/ 中包含该文件 其中 toolname 可以是 Nova 或 Telescope。如果你有那个文件夹,你应该继续把它放在你的服务器上,否则你必须先发布资产,然后再把它放在服务器上。

Mix 清单不存在。

您可以通过更新节点版本来解决此问题。

实际上当你 运行 命令 npm 运行 dev 时, 显示错误消息“错误:您使用的是不受支持的 Node 版本。请至少更新到 Node v12.14” 很容易你可以通过更新节点 js 版本来修复它

谢谢

尝试将您的 public 路线添加到您的 app/Providers/AppServiceProvider。php

public function register()
{
    $this->app->bind('path.public',function(){

    return'/home/hosting-name-folder/public_html'; 
        
    });
}

在 Windows 和 Ubuntu 上都遇到了同样的问题。在 Ubuntu 上解决了(我认为解决方案在 Windows 上是相似的)。问题是因为我安装的npm版本太旧了。

我的解决方案如下。我安装了 nvm (NodeVersionManager -version 0.39.1),它允许我切换到最新的稳定版本的节点 (v16.14.0),然后安装 npm 8.5.0。

详细步骤: Linux bash 终端命令:

  1. touch ~/.bash_profile ~/.bashrc ~/.zshrc ~/.profile
  2. sudo apt 安装 curl
  3. curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
  4. 注销并登录 Ubuntu 用户
  5. nvm --version
  6. nvm ls-remote
  7. nvm 安装 16.14.0
  8. 节点--版本

...然后在 laravel 项目中:

  1. npm ci
  2. npm 安装-g npm@8.5.0
  3. npm 审计修复
  4. npm 运行 开发

试试这个!!

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

对我有用

如果您之前的设置是 correct.but,您正在查看此类错误,它显示 Mix 清单不存在。然后写这些命令。

npm ci
npm run dev
  • 这样的目录结构

    --- public 
       --- app
           --css
              --app.css
           --js
              --app.js
    
  • 像这样在 laravel blade 文件中导入 css js

    <link rel="stylesheet" href="{{ asset('app/css/app.css') }}">
    
    <script src="{{ asset('app/js/app.js') }}" type="text/javascript"></script>
    

我通过这个命令解决了我的问题: npm 安装 npm 运行 开发

使用 Jetstream(使用 Laradock)为我全新安装 Laravel 9。

npm run install && npm run development

当 运行 npm run dev 混音未编译文件并创建 mix-manifest.json