96

I just created a brand new project
and ran npm install bootstrap@4.0.0-beta jquery popper.js --save
and changed the .angular-cli.json's related parts as below

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

however receiving the error below

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

any idea how to fix it?

H. Pauwelyn
  • 13,575
  • 26
  • 81
  • 144
cilerler
  • 9,010
  • 10
  • 56
  • 91
  • odd, I got it to work for me. are you using the latest cli? can you try reinstalling node_modules – LLai Aug 12 '17 at 03:22
  • 1
    The error must be somewhere else – brijmcq Aug 12 '17 at 03:26
  • @LLai `@angular/cli: 1.3.0 node: 6.11.2 npm: 5.3.0` did you changed the parts in **.angular-cli.json** if you did not you won't see the error in console. – cilerler Aug 12 '17 at 03:36
  • yeah I have your exact scripts & styles. jquery@3.2.1 popper.js@1.11.1 bootstrap@4.0.0-beta – LLai Aug 12 '17 at 05:27
  • i am ot sure how much this will help but you can look at this question on this [page](https://rahulrsingh09.github.io/AngularConcepts/faq) there is a question on how to add third party libs – Rahul Singh Aug 12 '17 at 06:44

6 Answers6

227

Looking at the docs at https://getbootstrap.com/docs/4.2/getting-started/introduction/#js you can see that they import the following:

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

Note the naming: jquery.slim.min.js, umd/popper.min.js!

Therefore I used the following in my .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"
      ],

After that it seems to work now.

leymannx
  • 5,138
  • 5
  • 45
  • 48
Martin Bauer
  • 2,285
  • 2
  • 9
  • 5
  • What do you have in your packages.json for jquery? In my node_modules jquery folder I didn't have a jquery.slim.min.js. Actually just found it in jquery 3.2.1 – Jim Culverwell Aug 13 '17 at 01:49
  • 2
    My package.json looks as follows for jquery: ` "jquery": "^3.2.1"` I have testet it with the full jquery version too, it seems to work also. Only the **umd**/popper.min.js seems neccessary. – Martin Bauer Aug 13 '17 at 07:55
  • This also works in Aurelia when added to the prepend section in aurelia.json. If you are replacing the alpha it will likely replace tether. – 4imble Aug 14 '17 at 09:15
  • 2
    This answer has 76 upvotes... the dev gave a snarky "RTFM"/close to a Github issue asking the same question – brandones Oct 27 '17 at 19:17
  • 4
    Using jQuery-slim or not doesn't matter, but using the umd-version of popper.js fixed it, thanks! – finstas Nov 02 '17 at 12:16
  • I have used the "/bootstrap.bundle.min.js" file instead of bootstrap.min.js and seems to be working without referncing popper. Maybe it's inluced in the bundle. – Attmik Nov 07 '17 at 11:17
  • @Attmik not all components need popper.js. See http://getbootstrap.com/docs/4.0/getting-started/introduction/ For example: * Dropdowns for displaying and positioning (also requires Popper.js) * Tooltips and popovers for displaying and positioning (also requires Popper.js) If you import not the umd version of popper the error occurs. – Martin Bauer Nov 07 '17 at 11:33
  • 2
    Using `/dist/umd` instead of `/dist` in popper dependency did the trick. Thanks. – redent84 Jul 03 '18 at 13:52
51

I had the same problem. My solution was not to import the dist-folder (./node_modules/popper.js/dist/popper.js) but rather the umd-folder (./node_modules/popper.js/dist/umd/popper.js). Does not matter if you get the mini or normal version of the js-file.

3

I can see that many people are struggling with adding and properly including Bootstrap 4 dependencies (jQuery, popper.js etc.). But there is a much easier solution in the form of https://ng-bootstrap.github.io.

ng-bootstrap provides native Angular directives written from the ground up. The positive consequence is that: * you don't need to include and worry about jQuery, popper.js etc. * directives provide APIs that "make sense" in the Angular world

For anyone trying to use Bootstrap 4.beta with Angular - ng-bootstrap just released its first beta which is fully compatible with Bootstrap 4.beta CSS

pkozlowski.opensource
  • 117,202
  • 60
  • 326
  • 286
1

If you work in Asp.net Mvc umd also do the thing.

As in https://stackoverflow.com/a/50839939/8497522 just add in BundleConfig.cs:

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

except:

bundles.Add(new ScriptBundle("~/bundles/popper").Include("~/Scripts/popper.js"));
Damian Kurek
  • 111
  • 6
0

To run modal please change the target from "es2015" to "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"] 
}
Evgeny Minkevich
  • 2,319
  • 3
  • 28
  • 42
Maniraj A
  • 1
  • 2
0

Found hints in answers above :

1)Include popper.js before bootstrap

  1. Update the path to popper.js file. Using /dist/umd instead of /dist

The correct path to popper was in angular-cli.json file was

./node_modules/popper.js/dist/umd/popper.js
Vladyslav Didenko
  • 1,352
  • 1
  • 14
  • 19