2017-08-12 27 views
12

Bootstrap 4 Beta çıktı ... yey! Ancak Tether, araç ipucu (ve diğer özellikler) için Popper.js ile değiştirilmiştir. Gittim ve benim webpack.config.js (tüm yapılandırma here görülebilir) güncellendi,Bootstrap 4 Betapack Popper.js Webpack ile 3.x atar Popper bir kurucu değil

Bootstrap dropdown require Popper.js 

yeterince kolay görünüyor ve Bootstrap sonra çalışmaya başladı: Ben Popper.js değişiklikle ilgili bana tavsiye etmek yeterince hızlı konsolda atılmış bir hata gördüm (benim yaptığım tek değişiklik Popper'la Tether değiştirmekti):

plugins: [ 
new ProvidePlugin({ 
    'Promise': 'bluebird', 
    '$': 'jquery', 
    'jQuery': 'jquery', 
    'window.jQuery': 'jquery', 
    'window.$': 'jquery', 
    Popper: 'popper.js' 
}), 

Ben de main.ts dosyasında import 'bootstrap' yaptı.

Ben şimdi başka bir sorun (Ben Tether ile yoktu ki), yeni bir konsolda hata atılır var Ancak:

Uncaught TypeError: Popper is not a constructor 

Chrome'da hata ayıklamak çalışırsanız, ben Popper olarak yüklenen var Aşağıdaki yazdırma ekranından görebileceğiniz gibi bir nesne (Bootstrap'ın şikayet etmeyi bırakması). Son olarak tüm kodlarımı dahil etmek için sonuncu. Öyle sonra en iyi buysa ben doğru Popper içe yokmuş gibi

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'); 
    } 
} 

görünüyor (önceki Bootstrap alfa 6 ve Tether ile çalışmak için kullanılır) Aurelia ve TypeScript ile inşa basit bir özel öğe ile Bootstrap araç ipucu kullanmak Webpack 3.x ile bunu başarma yolu?

cevap

28

Bootstrap 4 documentation gezinirken. Aslında doğru şekilde nasıl kurulacağını açıklayan Webpack hakkında bir bölüm buldum.

plugins: [ 
    // ... 
    new webpack.ProvidePlugin({ 
    $: 'jquery', 
    jQuery: 'jquery', 
    'window.jQuery': 'jquery', 
    Popper: ['popper.js', 'default'] 
    }) 
    // ... 
] 

ve en main.ts

import 'bootstrap'; 

ve voilà kendisine import da unutmayalım: Bootstrap - installing with Webpack belgelerine ardından cevap basitçe aşağıdaki webpack.config.js değiştirmektir! Biz

+1

harika! Ben 3 gün önce internette arıyorum! çok teşekkür ederim!!! – LeandroLuk

+0

hey millet! Aurelia.json kullanarak aynı şeyi nasıl yapabilirim? –

+0

@JhonatasKleinkauff buradaki soru sadece WebPack içindi, fakat 'Aurelia-CLI' için, önceki Tether içe aktarma hattında bir şey denediniz: [aurelia-cli-to-use-with-bootstrap-4] (https: //stackoverflow.com/questions/39432962/how-to-add-tether-in-aurelia-cli-to-use-with-bootstrap-4/39461325#39461325) – ghiscoding

3

Ben de aynı sorunu koştum ve çözüm burada tarif edilir: https://github.com/FezVrasta/popper.js/issues/287

Benim main.ts şimdi aşağıdaki gibi bir şey gibi görünür:

import "jquery"; 
import Popper from "popper.js"; 

(<any>window).Popper = Popper; 

require("bootstrap"); 

Ve almak için npm install @types/requirejs --save çalıştırmak zorunda require numaralı telefonu arayın.

DÜZENLEME: Ben tamamen etrafında bu ilk kez cevapsız, ama Documention aslında çözmek için daha iyi bir yol var bu 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", 
    ... 
    }) 
    ... 
] 
+0

Çözümünüz ilk başta çalışmadı, en büyük neden Popper'i tamamen webpack.config.js'den kaldırmak zorunda kalmamdı. Lütfen cevabınızda bunu kabul edebilirim, böylece kabul edebilirim. – ghiscoding

+0

Doğrudan webpack.config içinde doğru bir şekilde nasıl yapılacağını öğrendim, aslında başlangıç ​​bölümünde yeni Bootstrap 4 belgelerine göz atarken şans eseri buldum. Bu yüzden aslında kendi sorumu cevapladım ama hala sizinkini kestirdim çünkü bu, gerçek meseleyi anlamama yardımcı oldu. Tekrar teşekkürler. – ghiscoding

3

Eğer WebPack yapın kullanıyorsanız :) İşe geri şunlardır: ASP olarak

window.$ = window.jQuery = require('jquery'); 
window.Popper = require('popper.js').default; // pay attention to "default" 
require('bootstrap/dist/js/bootstrap'); 
0

.Net Core 2 proje işe yarıyor Benim için ana HTML dosyası ("_Layout.cshtml" dosyasını)

<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> 

arasında aşağıdaki komut ekleyin.

İlgili konular