直接使用 bootstrap.bundle.min.js(含 Popper)可解决“Popper is not defined”错误;若拆分引入,须严格按 jQuery→Popper v1.x(BS4)或 @popperjs/core v2+(BS5)→bootstrap.min.js 顺序加载,并验证路径与版本匹配。

Bootstrap 报 Popper is not defined 怎么办
直接原因是浏览器执行 bootstrap.js 时找不到全局 Popper 对象,本质是依赖链断裂。不是代码写错了,而是脚本没加载、加载顺序错、或版本不匹配。
用 bootstrap.bundle.min.js 替代 bootstrap.min.js
这是最简单、最不容易出错的解法。bundle 版本已把 Popper 编译进去了,不用额外管它。
-
bootstrap.min.js是“精简版”,不含 Popper,必须手动补上,且顺序不能错 -
bootstrap.bundle.min.js是“全家桶”,内置 Popper v1(BS4)或 v2(BS5),开箱即用 - CDN 地址必须对应版本:BS4 用
https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js;BS5 用https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js - 切勿同时引入
bootstrap.min.js和bootstrap.bundle.min.js—— 会冲突报错
手动引入 Popper.js 时的三个致命坑
如果你非得拆开引入(比如要单独升级 Popper 或做模块化构建),必须严格满足以下条件:
- Bootstrap 4 只认
Popper.js v1.x(如1.16.1),@popperjs/core(v2+)完全不兼容,引入后 dropdown 静默失效 - 加载顺序必须是:
jquery.min.js→popper.min.js→bootstrap.min.js,少一个或顺序颠倒都会触发ReferenceError: Popper is not defined - 本地路径要验证:打开浏览器 Network 面板,确认
popper.min.js返回状态码是200,而不是404;常见错误是写成js/popper.js却实际放在node_modules/@popperjs/core/lib/index.js
怎么快速验证 Popper 是否就位
别猜,直接在浏览器控制台敲一行:
typeof Popper !== 'undefined'
返回 true 才算过关。如果返回 false,说明要么没加载,要么加载失败,或者被其他脚本覆盖了全局 Popper 变量。
特别注意:有些构建工具(如 Vite)默认不注入全局变量,即使你 import '@popperjs/core',也不会自动挂到 window.Popper 上 —— 这时候必须显式赋值:window.Popper = Popper,否则 bootstrap.min.js 依然报错。


















