popper.js w bootstrap 4 daje SyntaxError Nieoczekiwany eksport tokenu


100

Próbowałem zainstalować bootstrap 4 i zamieściłem następujące linki

<script src="libs/jquery/dist/jquery.min.js"></script>
<script src="libs/tether/dist/js/tether.min.js" ></script>
<script src="libs/popper.js/dist/popper.js"></script>
<script src="libs/bootstrap/dist/js/bootstrap.min.js" ></script>

Ale pojawia się następujący błąd:

Uncaught syntaxError: Nieoczekiwany eksport tokenu

wprowadź opis obrazu tutaj

Jakieś pomysły, jak to naprawić?


Nie wiem, plik bootstrap tego wymaga
— Павел Шиляев

nie, użyłem bootstrapu, ale nigdy mnie o to nie poprosił
— Ashish sah

1
ostatnia wersja zapytana
— Павел Шиляев

cóż, jeśli tak jest, powiem, użyj linków CDN
— Ashish sah

problem polega na tym, że nie powinienem używać linków CDN, gdy uploud na rynku
— Павел Шиляев

Odpowiedzi:


35

Napotkałem ten sam problem, jeśli używam popper.js z sieci CDN, takiej jak cdnjs.

Jeśli przyjrzysz się kodowi źródłowemu Bootstrap 4przykładów, takich jak na przykład Navbar , zobaczysz, że popper.min.jsjest ładowany z:

<script src="https://getbootstrap.com/docs/4.1/assets/js/vendor/popper.min.js"></script>

Uwzględniłem to w swoim projekcie i błąd zniknął. Możesz pobrać kod źródłowy z

https://getbootstrap.com/docs/4.1/assets/js/vendor/popper.min.js

i dołącz do projektu jako plik lokalny i powinno działać.


tak. Masz rację. Skopiowałem i wkleiłem ten kod, a błąd znika. CDN nie określa żadnej konkretnej wersjipopper.js
— Fabrizio Bertoglio

2
Chociaż to działa, myślę, że to nie jest właściwy sposób, dopóki zespół BootStrap nie zaktualizuje własnego kodu.
— Nadeem Jamali,

8
Powyższy adres URL zwraca błąd „nie znaleziono” (404). Użyłem getbootstrap.com/docs/4.1/assets/js/vendor/popper.min.js dla Bootstrap 4.1.3 i to rozwiązało problem.
— Mike Strother

1
Używanie techniki sugerowanej w tej odpowiedzi jest jak gonienie za ruchomym celem. Prawidłowej odpowiedzi udzielają Marc i Zim.
— nagu

niestety to już nie działa. Błąd zniknął, ale podpowiedź jest domyślną podpowiedzią HTML
— deanwilliammills

250

Właśnie to zrozumiałem i pomyślałem, dlaczego tak się naprawdę dzieje. W przypadku, gdy inni tu dotrą:

Sprawdź plik readme.md „Użycie”. Biblioteka jest dostępna w trzech wersjach dla trzech różnych ładujących modułów. Krótko mówiąc: jeśli załadujesz go z <script>tagiem, musisz użyć wersji UMD . Możesz go znaleźć w /dist/umd. Domyślnie (in /dist) jest ESNext (ECMA-Script), którego nie można załadować za pomocą scripttagu.


5
Dziękuję Ci. Pozbyłem się tego błędu, przechodząc do pliku umd.
— user1500321

4
Zmiana odniesienia do pliku w folderze umd rozwiązała mój problem
— Vimalan Jaya Ganesh

16
To powinna zostać zaakceptowana odpowiedź. Niesamowite. Dziękuję bardzo za udostępnienie.
— Ajay Kumar

3
Powyżej, to jest prawdziwa odpowiedź.
— Ron

1
Świetnie za szybką pomoc, dzięki. Zastanawiałem się, czym są foldery / umd i / esm, ale Google nie daje dobrych wyników.
— Blackbam

91

Bootstrap 4 wymaga wersji UMD popper.jsi upewnij się, że kolejność jest następująca:

<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="~/Scripts/jquery-3.0.0.min.js"></script>
<script src="~/Scripts/umd/popper.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>

Wersja UMD to jedyne łącze CDN, które usunęło błąd.
— nyusternie

Dzięki stary! Twoje zamówienie rozwiązało mój problem. Twoje zdrowie!
— Noobie

18

Możesz także dodać plik bootstrap.bundle.min.js i usunąć popper.js w swoim html.

Dołączone pliki JS ( bootstrap.bundle.jsi zminimalizowane bootstrap.bundle.min.js) obejmują [Popper] ( https://popper.js.org/ ), ale nie jQuery .


2
bootstrap.bundle.min.jsw zestawiepopperjs
— vuhung3990

1
Najlepszą odpowiedzią, ponieważ nie wymaga użycia dodatkowych bibliotek Popper.js w ogóle
— Buddyz

10

Wiersz 96 w README

Odległe cele

Popper.js jest obecnie dostarczany z myślą o 3 celach: UMD, ESM i ESNext.

  • UMD - Universal Module Definition: AMD, RequireJS i globalne;
  • ESM - Moduły ES: dla pakietu internetowego / pakietu zbiorczego lub przeglądarki obsługującej specyfikację;
  • ESNext: Dostępne w dist/, może być używane z pakietem webpack i babel-preset-env;

Upewnij się, że używasz odpowiedniego do swoich potrzeb. Jeśli chcesz zaimportować go ze <script>znacznikiem, użyj UMD.


Użycie pliku popper.min.js znajdującego się w katalogu UMD rozwiązało mój problem podczas instalacji poppera przez npm. Dziękuję Ci!
— Kickin_Wing

6

Masz następujący kod w Bundle Config bundles.Add (nowy ScriptBundle ("~ / bundles / jquery"). Include ("~ / Scripts / jquery- {wersja} .js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
                    "~/Scripts/jquery.validate*"));

        // Use the development version of Modernizr to develop with and learn from. Then, when you're
        // ready for production, use the build tool at https://modernizr.com to pick only the tests you need.
        bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
                    "~/Scripts/modernizr-*"));

        bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include(
                    "~/Scripts/umd/popper.min.js",
                  "~/Scripts/bootstrap.js",
                  "~/Scripts/respond.js"));

następujący kod w układzie html

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")

To zadziałało dla mnie

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.