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

HTML页面中jQuery引入异常求助:外部JS文件无法正常调用jQuery

问题原因

你遇到的问题出在两个关键点:

  1. 语法不支持+重复引入冲突:普通的<script>标签默认不识别ES模块的import语法,浏览器会直接报错,导致example.js后续代码完全不执行。同时你既通过CDN全局引入了jQuery,又在js文件里用import重复导入,本身就存在逻辑冲突。
  2. 全局变量已存在:CDN引入的jQuery已经把$挂载到了全局作用域,不需要再用import重复获取。

解决方案

根据你的使用场景,有两种可行的处理方式:

方式一:使用全局挂载的jQuery(推荐,匹配你原本的CDN引入逻辑)

直接删除example.js里的import语句,直接使用全局的$即可:

// 修改后的 example.js
$(function() {
    alert(1);
});

HTML里的引入代码保持不变,就能正常弹出提示框。

方式二:使用ES模块导入jQuery

如果你想保留import语法,需要做两处修改:

  1. 给HTML中引入example.js的<script>标签添加type="module"属性,告知浏览器这是ES模块:
<head>
    <!-- 移除CDN的jQuery引入,避免重复 -->
    <script src="example.js" type="module"></script>
</head>
  1. 修改example.js的导入路径,浏览器无法直接识别npm本地模块,可改用CDN的模块版本:
// 修改后的 example.js
import $ from 'https://cdn.jsdelivr.net/npm/jquery@3.6.4/dist/jquery.esm.min.js';
$(function() {
    alert(1);
});

如果你的项目使用Webpack、Vite等打包工具,则可以保留import $ from "jquery",打包工具会自动处理模块路径问题。


为什么直接写在HTML的<script>标签里能正常运行?

这段代码没有使用import语法,直接利用了CDN引入的全局$变量,浏览器能正常解析执行,$(function())会在DOM加载完成后触发弹窗,因此可以正常工作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 14:52:08