看似相似的问题存在here和here,但提供的答案并没有解决我的情况。
我的服务器上有一个 Node/Express/Webpack 堆栈,我使用 npm 安装 Bootstrap 4 alpha 6 以及 tether.js,这是工具提示功能所需的依赖项。在我的主 JS 文件中,如 webpack 配置中定义的那样,我使用以下代码片段导入了系绳并初始化了 Bootstrap 工具提示函数:
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] }),
]
项目文件可在此处作为内部存储库获得,以防万一。