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

95

Ich habe gerade eine brandneue erstellt Projekt
und lief npm install [email protected] 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?

Cilerler
quelle
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. [email protected] [email protected] [email protected]
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.

Martin Bauer
quelle
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.

Björn Bergenheim
quelle
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

pkozlowski.opensource
quelle
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"));
Damian Kurek
quelle
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"] 
}
Maniraj A.
quelle