You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel 8引入模板使用{{ asset }}报preg_match参数类型错误如何解决?

问题排查方案

  • 第一步:检查asset()辅助函数的传参格式
    Laravel 原生asset()函数要求必须传入字符串类型的静态资源相对路径,正确写法示例:
<link rel="stylesheet" href="{{ asset('template/css/main.css') }}">

如果出现以下错误写法会触发参数类型报错:

  • 直接写{{ asset }}不带任何参数

  • 传入数组作为参数,例如{{ asset(['path/to/css.css']) }}

  • 传入的配置项返回值为数组,例如{{ asset(config('custom.asset_path')) }},需要确认对应配置项返回值为字符串

  • 第二步:核对文件系统配置
    打开config/filesystems.php,检查disks.public.url配置项是否为字符串格式,正常配置示例:

'public' => [
    'driver' => 'local',
    'root' => storage_path('app/public'),
    'url' => env('APP_URL').'/storage',
    'visibility' => 'public',
],

如果该配置被误改为数组格式,会导致asset()生成路径时读取到数组值触发报错。

  • 第三步:排查是否存在自定义函数覆盖
    如果项目中自行定义了同名asset()辅助函数(通常在app/Helpers.php等全局加载文件中),需要确认该自定义函数的入参要求、返回值类型是否符合预期,也可以在tinker中执行以下命令验证函数来源:
php artisan tinker
# 执行后输入
reflectionFunction('asset')->getFileName();

原生函数返回路径应为vendor/laravel/framework/src/Illuminate/Foundation/helpers.php,如果返回其他路径则说明存在覆盖。

  • 第四步:检查模板标签其他属性
    确认link标签的所有属性中,是否有其他Blade输出语句返回了数组,连带导致路径解析异常。

内容的提问来源于stack exchange,提问作者seacucumber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:57:05