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.