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

在Vue组件中传递Laravel路由作为Props时出现编译错误求助

解决Vue组件中使用Blade route()方法的语法错误

嘿,我来帮你搞定这个报错问题!你遇到的Unexpected token ':'错误,根源在于Vue的v-bind语法和Blade模板输出的引号、表达式解析规则冲突了,具体来说:

当你写:authPath= "{{ route('auth') }}"的时候,Vue会把冒号后面的内容当成JavaScript表达式去解析。而Blade渲染{{ route('auth') }}后会输出类似http://your-domain/auth这样的URL字符串,这就导致Vue看到的表达式变成了"http://your-domain/auth"——URL里的:(比如http://里的冒号)会被Vue误判为表达式中的非法语法,从而抛出错误。

这里有两种简单的解决办法:

方法一:去掉v-bind,直接使用HTML属性

因为route('auth')渲染后是一个静态的字符串URL,不需要Vue做动态表达式解析,所以可以直接用kebab-case的HTML属性写法:

<nav-bar :user="{{ json_encode(Auth::user()) }}" auth-path="{{ route('auth') }}"></nav-bar>

Vue会自动把HTML里的auth-path属性映射到组件中定义的authPath camelCase prop上,完美适配。

方法二:保留v-bind,用单引号包裹Blade输出

如果你一定要用v-bind语法(比如后续可能需要动态修改这个值),需要用单引号把Blade的输出包裹起来,明确告诉Vue这是一个字符串字面量,而不是要解析的表达式:

<nav-bar :user="{{ json_encode(Auth::user()) }}" :authPath="'{{ route('auth') }}'"></nav-bar>

这样Vue就会把单引号里的内容当成普通字符串处理,不会再去解析URL里的冒号了。

另外补充一点:你的:user="{{ json_encode(Auth::user()) }}"写法是没问题的,因为json_encode输出的是合法的JavaScript对象字面量,Vue可以正确解析这个表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:07:34