混合清单在存在时不存在

Chr*_*ris 20 php laravel laravel-mix

对于我的管理面板,我提取所有资产,包括manifest-json.jsto mix.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"
}
Run Code Online (Sandbox Code Playgroud)

问题是在使用时

{{ mix('backend/css/app.css') }}
Run Code Online (Sandbox Code Playgroud)

在我的刀片文件中,它看起来public/manifest-json.js而不是寻找它backend/manifest-json.js.

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

小智 23

我解决了运行此命令的问题

npm install
Run Code Online (Sandbox Code Playgroud)

然后

npm run production
Run Code Online (Sandbox Code Playgroud)

谢谢.

  • 或者你可以运行'Npm run dev'而不是生产:) (4认同)

Gve*_*vep 16

在将laravel项目部署到服务器之后,我遇到了同样的异常 .它在localhost上运行得非常好,但经过大量研究后我找到了解决方案.如果在服务器上遇到此异常,则必须将公共路径绑定到public_html

只需转到app/Providers下,您将找到您的AppServiceProvider文件,并在boot()方法内部进行绑定,如下所示.

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

  • 非常感谢您,与其他人相比,这是一个更清洁的解决方案!我还建议使用某种环境常量(在 `.env` 文件中设置)来指定系统范围内公共目录的路径。 (3认同)
  • 这取决于你的文件夹结构,如果你的 laravelApp 和 public_html 在同一目录下它将无法工作,你应该根据你的结构进行配置。 (2认同)

Har*_*hil 15

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

npm install
Run Code Online (Sandbox Code Playgroud)

进而

npm run dev
Run Code Online (Sandbox Code Playgroud)

现在错误已解决。伊皮。


Chr*_*ris 11

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

假设manifest-json文件存储在public/app/manifest-json.js,然后对于public/app/css/app.css你将使用的文件:

<link rel="stylesheet" href="{{ mix('css/app.css', 'app') }}">
Run Code Online (Sandbox Code Playgroud)

mix()-helper功能允许第二个参数,清单文件的目录.只需在那里指定它,它将使用正确的清单文件.

  • 我的文件位于共享主机上的public_html文件夹中,该如何设置? (3认同)

小智 8

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

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

<link rel="stylesheet" href="{{  mix('dist/css/app.css')  }}">
Run Code Online (Sandbox Code Playgroud)

解决方案1 将其更改为这样。

<link rel="stylesheet" href="{{  asset('dist/css/app.css')  }}">
Run Code Online (Sandbox Code Playgroud)

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

修改App\Providers\AppServiceProvider文件并将以下内容添加到boot()方法中。

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

解决方案3

如果您有 root 访问权限,请运行:

npm install & npm run dev
Run Code Online (Sandbox Code Playgroud)


Sol*_*van 7

共享主机laravel 5.6测试:做标准水平,如后说明的在这里 ; 需要两个级别:在app/Providers/AppServiceProvider.php:

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

并在public_html文件make .htaccess文件中包含内容:

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

来源:这里 这个文件在某些​​情况下变化最大.

这就是全部并解决了我的问题


Den*_*app 7

我在 Laravel 包中遇到了同样的问题,它的资产没有发布:

这为我解决了这个问题:

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

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

  • 也为我工作,为 Nova,使用“php artisan nova:publish” (3认同)

小智 5

尝试以下命令:

npm install

npm run dev