【发布时间】:2018-01-20 14:34:20
【问题描述】:
所以Bootstrap 4 Beta 出局了……是的!然而,Tether 已被 Popper.js 替换为工具提示(和其他功能)。我看到控制台中抛出的错误足够快,可以告诉我更改为Popper.js:
Bootstrap dropdown require Popper.js
看起来很简单,我去更新了我的webpack.config.js(可以看到整个配置here),然后 Bootstrap 开始工作(我所做的唯一改变是用 Popper 替换了 Tether):
plugins: [
new ProvidePlugin({
'Promise': 'bluebird',
'$': 'jquery',
'jQuery': 'jquery',
'window.jQuery': 'jquery',
'window.$': 'jquery',
Popper: 'popper.js'
}),
我还在我的main.ts 文件中创建了import 'bootstrap'。
但是我现在遇到了另一个问题(我在使用 Tether 时没有),控制台中抛出了一个新错误:
Uncaught TypeError: Popper is not a constructor
如果我尝试在 Chrome 中调试,我确实将 Popper 作为对象加载(这就是 Bootstrap 停止抱怨的原因),如下面的打印屏幕所示。
最后包括我所有的代码。我使用 Bootstrap 工具提示和一个简单的自定义元素,该元素由 Aurelia 和 TypeScript 构建(它曾经与以前的 Bootstrap alpha 6 和 Tether 一起使用)
import {inject, customAttribute} from 'aurelia-framework';
import * as $ from 'jquery';
@customAttribute('bootstrap-tooltip')
@inject(Element)
export class BootstrapTooltip {
element: HTMLElement;
constructor(element: HTMLElement) {
this.element = element;
}
bind() {
$(this.element).tooltip();
}
unbind() {
$(this.element).tooltip('dispose');
}
}
看起来我没有正确导入Popper,如果是这样,那么使用Webpack 3.x 实现这一目标的最佳方法是什么?
【问题讨论】:
标签: javascript twitter-bootstrap webpack aurelia bootstrap-4