La dipendenza Bootstrap4 PopperJs genera un errore su Angular


95

Ne ho appena creato uno nuovo di zecca progetto
ed eseguito npm install bootstrap@4.0.0-beta jquery popper.js --save
e modificato le parti correlate di .angular-cli.json come di seguito

  "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"
  ],

tuttavia ricevendo l'errore di seguito

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

hai qualche idea su come aggiustarlo?


strano, devo farlo funzionare per me. stai usando l'ultima cli? puoi provare a reinstallare node_modules
LLai

1
L'errore deve essere da qualche altra parte
brijmcq

@LLai @angular/cli: 1.3.0 node: 6.11.2 npm: 5.3.0hai cambiato le parti in .angular-cli.json se non l'hai fatto non vedrai l'errore nella console.
cilerler

sì, ho i tuoi script e stili esatti. jquery@3.2.1 popper.js@1.11.1 bootstrap@4.0.0-beta
LLai

Non sono sicuro di quanto questo aiuterà, ma puoi guardare questa domanda in questa pagina, c'è una domanda su come aggiungere librerie di terze parti
Rahul Singh

Risposte:


223

Guardando i documenti su https://getbootstrap.com/docs/4.2/getting-started/introduction/#js puoi vedere che importano quanto segue:

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

Nota la denominazione: jquery. slim .min.js, umd /popper.min.js!

Pertanto ho usato quanto segue nel mio .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"
      ],

Dopo di che ora sembra funzionare.


Cosa hai nel tuo packages.json per jquery? Nella mia cartella jquery node_modules non avevo jquery.slim.min.js. In realtà l'ho appena trovato in jquery 3.2.1
Jim Culverwell il

2
Il mio package.json ha il seguente aspetto per jquery: "" jquery ":" ^ 3.2.1 "` L'ho testato anche con la versione completa di jquery, sembra funzionare anche. Solo ** umd ** / popper.min.js sembra necessario.
Martin Bauer

2
Questa risposta ha 76 voti positivi ... lo sviluppatore ha dato un brusco "RTFM" / vicino a un problema di Github facendo la stessa domanda 😂
brandones

4
Usare jQuery-slim o no non ha importanza, ma usare la versione umd di popper.js lo ha risolto, grazie!
finstas

2
Usare /dist/umdinvece che /distin dipendenza da popper ha funzionato. Grazie.
redent84

50

Ho avuto lo stesso problema. La mia soluzione non era importare la cartella dist (./node_modules/popper.js/dist/popper.js) ma piuttosto la cartella umd (./node_modules/popper.js/dist/ umd /popper.js). Non importa se ottieni la versione mini o normale del file js.


3

Vedo che molte persone stanno lottando con l'aggiunta e l'inclusione corretta delle dipendenze Bootstrap 4 (jQuery, popper.js ecc.). Ma c'è una soluzione molto più semplice sotto forma di https://ng-bootstrap.github.io .

ng-bootstrap fornisce direttive angolari native scritte da zero. La conseguenza positiva è che: * non è necessario includere e preoccuparsi di jQuery, popper.js ecc. * Le direttive forniscono API che "hanno senso" nel mondo angolare

Per chiunque cerchi di utilizzare Bootstrap 4.beta con Angular - ng-bootstrap ha appena rilasciato la sua prima beta che è completamente compatibile con Bootstrap 4.beta CSS


Molto più facile se stai usando Angular, ma non se stai usando AngularJS ...
El Mac

1
Bene, la domanda riguardava Angular e angular-cli, quindi non sono sicuro del motivo per cui AngularJS viene portato qui ...
pkozlowski.opensource

1

Se lavori in Asp.net Mvc umd fai anche la cosa.

Come in https://stackoverflow.com/a/50839939/8497522, aggiungi semplicemente BundleConfig.cs:

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

eccetto:

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

0

Per eseguire modal, modificare il target da "es2015" a "es5" in tsconfig.ts

"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"] 
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.