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

ASPX页面加载脚本报Uncaught SyntaxError: Unexpected token '<'错误如何解决?

问题原因

报错Uncaught SyntaxError: Unexpected token '<'的核心原因是:浏览器请求JS脚本资源时,服务器返回的不是合法的JS代码,而是HTML文档(HTML文档以<开头,浏览器尝试按JS语法解析时就会抛出该错误)。
注释一个script标签报错就减少一个,完全符合该逻辑:每少一个错误的JS资源请求,就少一次解析HTML为JS的报错。

CSS正常加载、JS异常的原因

该差异通常由以下两类问题导致:

  • 服务端渲染问题:你使用的head标签加了runat="server"属性,属于服务端控件,script标签的src属性中使用<%= ResolveUrl() %>内联表达式时,默认不会被服务端解析,最终渲染到前端的src会直接保留<%= ResolveUrl("~/js/xxx.js") %>这段字符串,请求该无效地址时服务端会返回当前登录页的HTML。而link标签的href属性在服务端控件容器内会被自动处理,所以可以正常解析路径。
  • 权限配置问题:如果站点使用了Forms身份验证,通常会默认配置允许匿名访问css目录,但未开放js目录的匿名访问权限。未登录状态下请求JS资源时,服务端会自动跳转到登录页,返回登录页的HTML内容。
解决方案

按优先级从高到低尝试:

  • 根因验证
    按F12打开浏览器开发者工具,切换到「网络」标签,刷新页面后点击任意一个加载失败的JS请求,查看「响应」内容,确认返回的是不是HTML页面,即可确定属于上述哪类问题。
  • 修复服务端解析问题
    如果是src没有被正确解析,可选择任意一种处理方式:
    1. 在页面的Page_Load事件中添加代码,强制解析head控件内的绑定表达式:
      protected void Page_Load(object sender, EventArgs e)
      {
          Header.DataBind();
      }
      
      同时把script标签的src中的<%= %>替换为<%# %>:
      <script src="<%# ResolveUrl("~/js/jquery3.5.1.js")%>"></script>
      
    2. 不需要修改后台代码,直接去掉head标签的runat="server"属性(如果你不需要在服务端操作head内的内容,该方案最简单)。
  • 修复权限配置问题
    如果是JS目录没有开放匿名访问,在web.config中添加如下配置即可:
    <location path="js">
      <system.web>
        <authorization>
          <allow users="*" />
        </authorization>
      </system.web>
    </location>
    
  • 临时验证方案
    也可以先直接写死相对路径测试,比如登录页在站点根目录的话,直接写成:
    <script src="js/jquery3.5.1.js"></script>
    
    如果测试正常,就说明确实是路径解析的问题。

内容的提问来源于stack exchange,提问作者Gustavo Souza da Rosa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 16:36:00