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

WebStorm编译报错ReferenceError: $ is not defined,jQuery加载异常求助

解决jQuery未加载导致的ReferenceError: $ is not defined错误

嘿,这个问题我熟!你碰到的ReferenceError: $ is not defined完全是脚本执行顺序搞的鬼——你的AlexTypescript.js在jQuery还没加载完成的时候就跑起来了,自然找不到$这个全局变量啦。

咱们来拆解下问题:浏览器是从上到下解析HTML的,你把jQuery的CDN脚本和自定义脚本都放在了<head>里,虽然jQuery的链接是CDN,但网络请求需要时间,你的自定义脚本会先于jQuery加载完成并执行,这时候$还没被定义,错误就出现了。

给你两个靠谱的解决方案:

  • 调整脚本位置(最推荐)
    把你的AlexTypescript.js移到</body>标签的前面,这样浏览器会先加载完页面所有元素,确保jQuery已经完全加载后,再执行你的自定义脚本。修改后的HTML应该是这样:

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
    <body>
        <!-- 这里放你的页面内容 -->
    
        <script type="text/javascript" src="AlexTypescript.js"></script>
    </body>
    </html>
    
  • 用加载事件包裹代码(适合必须放头部的场景)
    如果因为某些原因必须把自定义脚本放在<head>里,那就在AlexTypescript.js里把所有jQuery相关的代码包裹起来,确保只有当DOM和jQuery都准备好后才执行:

    // 用原生JS的DOM加载完成事件
    document.addEventListener('DOMContentLoaded', function() {
        $(function() {
            // 你的jQuery业务代码写在这里
        });
    });
    

    或者直接用jQuery自带的就绪事件(前提是jQuery能正常加载):

    $(document).ready(function() {
        // 你的jQuery业务代码写在这里
    });
    

另外可以顺手检查下jQuery的CDN链接是否能正常访问,但从错误提示来看,大概率还是执行顺序的问题——如果是CDN加载失败,控制台会有404的报错信息,而你现在只是$未定义,所以先调整顺序试试准没错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:02:44