【问题标题】:laravel asset() doesnt find assets in publiclaravel 资产()在公共场合找不到资产
【发布时间】:2022-02-23 16:37:39
【问题描述】:

我已经将名为 assets 的文件夹放在了我的公用文件夹中,我应该能够访问本页所述的资产:https://laravel.com/docs/9.x/helpers#method-asset

但由于某种原因,它不会加载并且浏览器控制台会出现此错误:

“http://localhost:8000/assets/js/jquery-3.4.1.min.js”的加载失败,而这应该是正确的路径

在刀片文件中我这样写:

<script src="{{asset ('assets/js/jquery-3.4.1.min.js') }}"></script>

我已经尝试过使用 URL::asset,但它没有找到文件

我创建了符号链接 'links' => [ public_path('storage') => storage_path('app/public'),

文件的真实路径是/home/penta/ponti-gest/storage/app/public/assets/js

在我的页面中,我使用的是 http

【问题讨论】:

  • 您应该阅读How to Ask 并相应地编辑您的问题,人们通常不会浪费时间检查您在不同答案中添加了哪些额外信息。添加到您的问题:您放置的符号链接;您尝试访问的文件的真实路径;准确指定您收到的错误It doesnt work 在此处不起作用;指定您在页面中使用的是 http 还是 https。

标签: javascript laravel


【解决方案1】:

根据您的 cmets:

我的公共/存储文件夹中已有文件夹资产

@GiuseppeP。 public/storage 文件夹是符号链接吗?

是的,我创建了符号链接 'links' => [ public_path('storage') => storage_path('app/public'), ],

您的文件在存储路径中。

这可以通过以下方式访问:

storage_path()

storage_path 函数将完全限定的路径返回到您的 应用程序的storage 目录。您也可以使用storage_path 函数生成给定文件的完全限定路径 storage目录:

storage_path('app/public/assets/js/jquery-3.4.1.min.js')

附录

或者,您可以通过在路径前加上 storage/... 前缀来使用 asset() 帮助程序。即:

The Public Disk

您的应用程序的filesystems 中包含的公共磁盘 配置文件适用于将要公开的文件 无障碍。默认情况下,public 磁盘使用本地驱动程序和 将其文件存储在storage/app/public

存储文件并创建符号链接后, 您可以使用 asset 帮助器创建文件的 URL:

asset('storage/assets/js/jquery-3.4.1.min.js')

【讨论】:

  • 我试着做 和它给出了以下相同的错误 Loading failed for the
  • 使用asset('storage/assets/js/jquery-3.4.1.min.js') 谢谢
【解决方案2】:

方法asset() 意思是进入公用文件夹 所以如果它不起作用

<script src="{{asset ('assets/js/jquery-3.4.1.min.js') }}"></script>

你应该有 public 文件夹 assets 文件夹然后 js 文件夹 然后是文件 jquery-3.4.1.min.js

希望对你有所帮助

【讨论】:

  • 我的公共/存储文件夹中已经有文件夹资产
  • 好的,如果您在 .env 中有 ASSET_URL,请将其删除并重试
  • @GiuseppeP。 public/storage 文件夹是符号链接吗?
  • 是的,我创建了符号链接 'links' => [ public_path('storage') => storage_path('app/public'), ],
【解决方案3】:

您必须在 .env 文件中设置 ASSET_URL

然后运行

php artisan config:cache

【讨论】:

  • 在我的 app.php 配置文件中我有 'asset_url' => env('ASSET_URL', null),我在哪里更改它?
  • 我试图将 ASSET_URL=public 放在我的 .env 中,但它不起作用并破坏了 adminLTE
最近更新 更多