【发布时间】:2021-06-16 04:35:55
【问题描述】:
我目前正在将一个 ES6 项目从 Bootstrap 4 迁移到 Bootstrap 5,并收到此错误:
Uncaught TypeError: bootstrapElement.Tooltip is not a function
正如Migration Notes 中所述,Bootstrap 5 已经放弃了 jQuery 的默认集成。但是,Bootstraps jQuery plugins will still be loaded, if jQuery is detected in the window object。
就我而言,我导入了 jQuery,但 Bootstrap 似乎没有检测到它:
import $ from "jquery";
import {Tooltip} from "bootstrap";
import {getjQuery} from "bootstrap/js/src/util";
...
console.log(getjQuery()); // returns null
bootstrapElement.Tooltip({ title: "Element Tooltip" }); // throws the above error
但即使我尝试手动将 jQuery 加载到window 对象中,也会出现错误:
if(!getjQuery()) {
window.jQuery = window.$ = $;
}
console.log(getjQuery()); // returns jQuery now
bootstrapElement.Tooltip({ title: "Element Tooltip" }); // still throws the error
我想这是因为我在导入 Tooltip 之后将 jQuery 加载到 window 中,并且插件会在导入期间加载。它不会,因为 jQuery 尚未设置为 window。
我知道我可以通过使用直接使用该插件
let elementTooltip = new Tooltip(bootstrapElement, { title: "Element Tooltip" });
elementTooltip.show();
而不是
bootstrapElement.Tooltip({ title: "Element Tooltip" });
bootstrapElement.Tooltip("Show");
但后来当我再次尝试删除工具提示时遇到问题,因为我无法再访问 elementTooltip 并且创建一个新实例不会解决问题。解决这个问题意味着项目架构中需要做大量工作(主要是因为这不是我使用的唯一插件),我想避免这种情况。
是否有可能以 Bootstrap 5 能够检测到并加载其 jQuery 插件的方式导入 jQuery?
【问题讨论】:
标签: javascript webpack bootstrap-5