Bootstrap 4 Beta
が出ています...ただし、ツールチップ(およびその他の機能)のTetherはPopper.js
に置き換えられました。 Popper.js
への変更を通知するのに十分な速さでコンソールにエラーがスローされるのを見ました。
Bootstrap dropdown require Popper.js
簡単だと思うので、webpack.config.js
(設定全体を見ることができます ここ )とBootstrapが動作し始めました(私が行った唯一の変更)テザーをポッパーに置き換えることでした):
plugins: [
new ProvidePlugin({
'Promise': 'bluebird',
'$': 'jquery',
'jQuery': 'jquery',
'window.jQuery': 'jquery',
'window.$': 'jquery',
Popper: 'popper.js'
}),
import 'bootstrap'
ファイルでmain.ts
も実行しました。
ただし、別の問題が発生しました(Tetherでは発生しませんでした)。コンソールに新しいエラーがスローされます。
Uncaught TypeError: Popper is not a constructor
Chromeでデバッグしようとすると、以下の印刷画面でわかるように、Popper
がオブジェクトとしてロードされています(Bootstrap文句を言うのをやめた理由)。
最後に、すべてのコードを含めます。私はBootstrapツールチップをAurelia
とTypeScript
(以前のBootstrapアルファ6およびテザー)
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
でそれを達成する最良の方法は何ですか?
閲覧中 Bootstrap 4ドキュメント 。実際に、Webpack
に関するセクションを見つけて、正しくインストールする方法を説明しています。 ブートストラップ-Webpackでのインストール のドキュメントに従って、答えはwebpack.config.js
次を含む:
plugins: [
// ...
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
Popper: ['popper.js', 'default']
})
// ...
]
import
を忘れないようにmain.ts
import 'bootstrap';
そしてほら!私たちはビジネスに戻りました:)
Webpackを使用している場合これを行います。
window.$ = window.jQuery = require('jquery');
window.Popper = require('popper.js').default; // pay attention to "default"
require('bootstrap/dist/js/bootstrap');
私はちょうど同じ問題に遭遇しました、そして解決策はここに記述されています: https://github.com/FezVrasta/popper.js/issues/287
僕の main.ts
は次のようになります。
import "jquery";
import Popper from "popper.js";
(<any>window).Popper = Popper;
require("bootstrap");
そして、私はnpm install @types/requirejs --save
require
への呼び出しを取得します。
編集:私はこれを初めて見逃しましたが、ドキュメントには実際にこれを解決するためのより良い方法があります https://getbootstrap.com/docs/4.0/getting-started/webpack/
plugins: [
...
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
Popper: ['popper.js', 'default'],
// In case you imported plugins individually, you must also require them here:
Util: "exports-loader?Util!bootstrap/js/dist/util",
Dropdown: "exports-loader?Dropdown!bootstrap/js/dist/dropdown",
...
})
...
]
bootstrap": "^4.1.1"
では、jquery
およびpopper.js
をインポートする必要はありません。これらのプラグインは、「ブートストラップ」またはブートストラップのプラグインが個別にインポートされるときにすでに含まれているためです。
注意プラグインを個別にインポートすることを選択した場合は、exports-loaderもインストールする必要があります
前述のようにファイルrequire('exports-loader?file ... ');
を必要とする必要はありません here これは$ npm install exports-loader --save-dev
をインストールするだけで自動的に処理されるためです
import 'bootstrap'; // Import all plugins at once
//
// Or, import plugins individually
//
// import 'bootstrap/js/src/alert';
// import 'bootstrap/js/src/button';
// import 'bootstrap/js/src/carousel';
// import 'bootstrap/js/src/collapse';
// import 'bootstrap/js/src/dropdown';
// import 'bootstrap/js/src/modal';
// import 'bootstrap/js/src/popover';
// import 'bootstrap/js/src/scrollspy';
// import 'bootstrap/js/src/tab';
// import 'bootstrap/js/src/tooltip';
// import 'bootstrap/js/src/util';
以下のようなことをする必要はありません。
const webpack = require('webpack');
module.exports = {
configureWebpack: {
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
Popper: ['popper.js', 'default']
})
]
}
}
私はvue.js
開発者であり、新しいvue-cli-3
で、ルートにvue.config.js
を作成し、新しいプラグインを登録するために上記のようなコードを配置しますが、bootstrap": "^4.1.1"
でこれをすべて行う必要はありません。
Bootstrapのツールチッププラグインはpopper.js
に依存しており、手動で有効にする必要があるため、tooltip要素を使用するコンポーネントで次のようにすることができます。
<script>
import $ from 'jquery';
export default {
mounted() {
$('[data-toggle="tooltip"]').tooltip();
},
};
</script>
ASP.net Core 2プロジェクトで、メインHTMLファイル( "_Layout.cshtml"ファイル)に次のスクリプトを追加します
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/js/popper.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.min.js"></script>
私にとってはうまくいっています。