看似类似的问题存在here和here,但提供的答案并未解决我的情况。
我的服务器上有一个Node / Express / Webpack堆栈,我在其上使用npm来安装Bootstrap 4 alpha 6以及tether.js,这是工具提示功能所必需的依赖项。在我的主JS文件中,如webpack配置中所定义的,我使用以下代码段导入了使用和初始化Bootstrap工具提示函数的tether:
import "tether";
和
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
然后,在我的 index.hbs (我使用把手渲染我的页面)中,我有以下代码片段来实现工具提示:
<button type="button" class="btn btn-secondary" data-toggle="tooltip" title="Tooltip on top">
Tooltip on top
</button>
脚本编译成功,没有任何错误或警告。但是,在浏览器中加载页面时,我收到错误tooltip is not a function...
。这不应该发生,对吧?我可以确认JQuery工作得很好,如下面的一个初始化工具提示下面的代码片段,如上所示渲染没有任何打嗝:
$('p#some').html('from jquery');
如下所示,JQuery和Tether插件以及Tooltip插件都已在我的 webpack.config.js 文件中启动:
plugins: [
new webpack.optimize.UglifyJsPlugin({ mangle: false, sourcemap: false }),
new ExtractTextPlugin({ filename: "../../public/dist/main.min.css" }),
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery",
Tether: "tether",
"window.Tether": "tether",
Alert: "exports-loader?Alert!bootstrap/js/dist/alert",
Button: "exports-loader?Button!bootstrap/js/dist/button",
Carousel: "exports-loader?Carousel!bootstrap/js/dist/carousel",
Collapse: "exports-loader?Collapse!bootstrap/js/dist/collapse",
Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
Modal: "exports-loader?Modal!bootstrap/js/dist/modal",
Popover: "exports-loader?Popover!bootstrap/js/dist/popover",
Scrollspy: "exports-loader?Scrollspy!bootstrap/js/dist/scrollspy",
Tab: "exports-loader?Tab!bootstrap/js/dist/tab",
Tooltip: "exports-loader?Tooltip!bootstrap/js/dist/tooltip",
Util: "exports-loader?Util!bootstrap/js/dist/util",
}),
new webpack.LoaderOptionsPlugin({ postcss: [autoprefixer] }),
]
如果有帮助,项目文件可作为内部仓库here使用。
答案 0 :(得分:6)
有几个问题,因为我自己遇到过类似的问题。
1)您需要在webpack.config.js的插件部分中提供对popper.js的引用;
Popper: ['popper.js', 'default'],
2)在你的主js中,导入所需的插件;
import 'bootstrap/js/dist/tooltip';
此处有更多信息:Bootstrap 4 - Webpack install