格式化选中代码时APP_URL相关代码报错的问题求助
问题重现
我在格式化以下Blade模板中的JS代码时,每次执行Format Selection操作,都会在const APP_URL = {!!json_encode(url('/')) !!}这行报错:
@push('scripts') <script> const csrfToken = $('meta[name="csrf-token"]').attr('content') const APP_URL = {!!json_encode(url('/')) !!} $("#chTahun").on('change', function() { const th = $(this).val() getChart(th) }) getChart() ... ... </script> @endpush
问题原因
这行是Blade模板语法和原生JS的混合写法,{!! ... !!}是Laravel Blade的非转义输出标记,不属于标准JavaScript语法。大多数代码格式化工具(比如VS Code内置格式化、Prettier)会把这段代码当成纯JS解析,无法识别Blade的模板语法,因此触发解析错误。
解决办法
1. 改用JS兼容的Blade输出写法
如果网站URL没有特殊字符,直接用标准Blade字符串输出,让格式化工具正常识别:
const APP_URL = "{{ url('/') }}";
如果需要保留非转义输出(比如URL含特殊字符),用反引号包裹Blade语法,让工具把它当成字符串的一部分:
const APP_URL = `{!! json_encode(url('/')) !!}`;
2. 让格式化工具忽略该行
给这行加上对应工具的忽略注释,比如用Prettier就加// prettier-ignore:
// prettier-ignore const APP_URL = {!!json_encode(url('/')) !!}
不同工具的忽略注释略有差异,比如ESLint用// eslint-disable-next-line,根据你使用的工具调整即可。
3. 临时注释应急
格式化前先把这行注释掉,完成格式化后再取消注释,手动调整格式:
// const APP_URL = {!!json_encode(url('/')) !!}
内容的提问来源于stack exchange,提问作者Imawjean
相关产品推荐
相关产品推荐

