Bootstrap4-Abhängigkeit PopperJs löst einen Fehler in Angular aus


95

Ich habe gerade eine brandneue erstellt Projekt
und lief npm install bootstrap@4.0.0-beta jquery popper.js --save
und änderte die zugehörigen Teile von .angular-cli.json wie folgt

  "styles": [
    "../node_modules/bootstrap/dist/css/bootstrap.css"
  ],
  "scripts": [
    "../node_modules/jquery/dist/jquery.js",
    "../node_modules/popper.js/dist/popper.js",
    "../node_modules/bootstrap/dist/js/bootstrap.js"
  ],

jedoch den Fehler unten erhalten

10:2287 Uncaught SyntaxError: Unexpected token export
    at eval (<anonymous>)
    at webpackJsonp.../../../../script-loader/addScript.js.module.exports (addScript.js:9)
    at Object.../../../../script-loader/index.js!../../../../popper.js/dist/popper.js (popper.js?4b43:1)
    at __webpack_require__ (bootstrap 4403042439558687cdd6:54)
    at Object.2 (scripts.bundle.js:66)
    at __webpack_require__ (bootstrap 4403042439558687cdd6:54)
    at webpackJsonpCallback (bootstrap 4403042439558687cdd6:25)
    at scripts.bundle.js:1

Hast du eine Idee, wie du das beheben kannst?


Seltsam, ich habe es für mich arbeiten lassen. Verwenden Sie die neueste CLI? können Sie versuchen, node_modules
— LLai

1
Der Fehler muss woanders sein
— brijmcq

@LLai @angular/cli: 1.3.0 node: 6.11.2 npm: 5.3.0haben Sie die Teile in .angular-cli.json geändert, wenn Sie dies nicht getan haben, wird der Fehler in der Konsole nicht angezeigt .
— Cilerler

Ja, ich habe Ihre genauen Skripte und Stile. jquery@3.2.1 popper.js@1.11.1 bootstrap@4.0.0-beta
— LLai

Ich bin nicht sicher, wie viel dies helfen wird, aber Sie können diese Frage auf dieser Seite betrachten. Es gibt eine Frage zum Hinzufügen von Bibliotheken von Drittanbietern
— Rahul Singh

Antworten:


223

Wenn Sie sich die Dokumente unter https://getbootstrap.com/docs/4.2/getting-started/introduction/#js ansehen, sehen Sie, dass sie Folgendes importieren:

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

Beachten Sie die Benennung: jquery. schlank .min.js, umd /popper.min.js!

Deshalb habe ich in meinem folgenden verwendet .angular-cli.json:

      "styles": [
        "../node_modules/bootstrap/dist/css/bootstrap.css"
      ],
      "scripts": [
        "../node_modules/jquery/dist/jquery.slim.min.js",
        "../node_modules/popper.js/dist/umd/popper.min.js",
        "../node_modules/bootstrap/dist/js/bootstrap.min.js"
      ],

Danach scheint es jetzt zu funktionieren.


Was haben Sie in Ihrer packages.json für jquery? In meinem jquery-Ordner node_modules hatte ich keine jquery.slim.min.js. Eigentlich gerade in jquery 3.2.1 gefunden
— Jim Culverwell

2
Meine package.json sieht für jquery wie folgt aus: `" jquery ":" ^ 3.2.1 "` Ich habe es auch mit der vollständigen jquery-Version getestet, es scheint auch zu funktionieren. Nur die ** umd ** / popper.min.js scheint notwendig.
— Martin Bauer

2
Diese Antwort hat 76 positive Stimmen ... der Entwickler gab ein snarky "RTFM" / in der Nähe eines Github-Problems und stellte die gleiche Frage
— brand

4
Die Verwendung von jQuery-slim oder nicht spielt keine Rolle, aber die Verwendung der umd-Version von popper.js hat das Problem behoben, danke!
— Finstas

2
Verwenden /dist/umdstatt /distin Popper-Abhängigkeit hat den Trick getan. Vielen Dank.
— redent84

50

Ich hatte das gleiche Problem. Meine Lösung war nicht die dist-Ordner (./node_modules/popper.js/dist/popper.js) , sondern die UMD-Ordner zu importieren (./node_modules/popper.js/dist/ umd /popper.js). Es spielt keine Rolle, ob Sie die Mini-Version oder die normale Version der JS-Datei erhalten.


3

Ich kann sehen, dass viele Leute Schwierigkeiten haben, Bootstrap 4-Abhängigkeiten (jQuery, popper.js usw.) hinzuzufügen und ordnungsgemäß einzuschließen. Es gibt jedoch eine viel einfachere Lösung in Form von https://ng-bootstrap.github.io .

ng-bootstrap bietet native Angular-Anweisungen, die von Grund auf neu geschrieben wurden. Die positive Konsequenz ist: * Sie müssen jQuery, popper.js usw. nicht einbeziehen und sich keine Gedanken darüber machen. * Direktiven bieten APIs, die in der Angular-Welt "sinnvoll" sind

Für alle, die versuchen, Bootstrap 4.beta mit Angular zu verwenden - ng-bootstrap hat gerade seine erste Beta veröffentlicht, die vollständig mit Bootstrap 4.beta CSS kompatibel ist


Viel einfacher, wenn Sie Angular verwenden, aber nicht, wenn Sie AngularJS verwenden ...
— El Mac

1
Nun, die Frage war über Angular und Angular-Cli, also nicht sicher, warum das AngularJS hier
— hochgebracht wird

1

Wenn Sie in Asp.net Mvc arbeiten UMD auch nicht die Sache.

Wie in https://stackoverflow.com/a/50839939/8497522 einfach in BundleConfig.cs hinzufügen:

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

außer:

bundles.Add(new ScriptBundle("~/bundles/popper").Include("~/Scripts/popper.js"));

0

Um modal auszuführen, ändern Sie bitte das Ziel in tsconfig.ts von "es2015" in "es5"

"styles": [ "src/styles.css", 
            "node_modules/bootstrap/dist/css/bootstrap.min.css" ], 
"scripts": ["node_modules/jquery/dist/jquery.min.js", 
            "node_modules/popper.js/dist/umd/popper.min.js", 
            "node_modules/bootstrap/dist/js/bootstrap.min.js"] 
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.