62

I have a fresh created Angular 4 CLI app. After running this:

npm install [email protected] jquery popper.js --save

and editing .angular-cli.json like this:

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

I still have an issue in Chrome Console:

Uncaught Error: Bootstrap dropdown require Popper.js (https://popper.js.org)
    at eval (eval at webpackJsonp.../../../../script-loader/addScript.js.module.exports (addScript.js:9), <anonymous>:6:17548)
    at eval (eval at webpackJsonp.../../../../script-loader/addScript.js.module.exports (addScript.js:9), <anonymous>:6:23163)
    at eval (eval at webpackJsonp.../../../../script-loader/addScript.js.module.exports (addScript.js:9), <anonymous>:6:50902)
    at eval (<anonymous>)
    at webpackJsonp.../../../../script-loader/addScript.js.module.exports (addScript.js:9)
    at Object.../../../../script-loader/index.js!../../../../bootstrap/dist/js/bootstrap.min.js (bootstrap.min.js?f885:1)
    at __webpack_require__ (bootstrap a2f1d85ef068872b0530:54)
    at Object.2 (scripts.bundle.js:66)
    at __webpack_require__ (bootstrap a2f1d85ef068872b0530:54)
    at webpackJsonpCallback (bootstrap a2f1d85ef068872b0530:25)

How do I fix this?

1

6 Answers 6

139

Include popper.js before bootstrap.js:

"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"
],
Sign up to request clarification or add additional context in comments.

9 Comments

Ensure that you add the version of popper.min.js in the ./dist/umd folder. This version ./dist/popper.min.js will cause issues with jquery.
What about declare const $: any; - is here any way to avoid this and have a result?
@DeveloperWonk How do you know that the popper.js in "umd" folder is the correct one?
@DeveloperWonk Popper.js is currently shipped with 3 targets in mind: UMD, ESM and ESNext. UMD - Universal Module Definition: AMD, RequireJS and globals; ESM - ES Modules: For webpack/Rollup or browser supporting the spec; ESNext: Available in dist/, can be used with webpack and babel-preset-env;
Is there any reason to include the *.min.js version of the files? Won't Webpack minify the files when bundling them anyway?
|
20

For Angular 7

npm install bootstrap jquery popper.js --save

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

Comments

15

Was same issue, when I updated app to 8 version of Angular. As solution can use bootstrap bundle minified js file instead bootstrap.min.js. Bootstrap bundle included popper.js already. Need to fix angular.json (scripts array in build section), in final will be something like this:

"scripts": [
    "./node_modules/jquery/dist/jquery.min.js",
    "./node_modules/bootstrap/dist/js/bootstrap.bundle.min.js",
],

For this solution popper.js is not needed in project. Can remove this module:

npm uninstall popper.js

just in case, jquery needed :)

Hope, help you

4 Comments

If I do this with Angular 8 I get an error "can't resolve popper.js"
It works for me. As I see at getbootstrap.com/docs/4.0/getting-started/contents/#js-files popper.js included in bundle
It works for me as well, I confirm. You can use jquery.slim.min.js, it works!
Only this worked for me. Installing and including popper.min.js before or after bootstrap.min.js didn't seem to work.
7

Form Angular 8 to 13

npm install bootstrap jquery popper.js --save

     "styles": [
      "src/styles.scss",
      "node_modules/bootstrap/dist/css/bootstrap.min.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"
    ],

Comments

0

The new https://www.npmjs.com/package/@popperjs/core doesnt work with bootstrap 5.

it still requires the old https://www.npmjs.com/package/popper.js?ref=vanillalist deprecated package.

tried in angular 13, it doesnt work, so have to fall back.

Comments

0

Angular with Bootstrap 5+ Since this version jQuery has been removed

npm i bootstrap popper.js*

 "styles": [
          "src/styles.scss",
          "node_modules/bootstrap/dist/css/bootstrap.min.css"
        ],
 "scripts": [
          "node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"
          "node_modules/popper.js/dist/umd/popper.min.js"
        ],

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.