Подтвердить что ты не робот

Зависимость Bootstrap4 от PopperJs вызывает ошибку на Angular

Я только что создал новый проект
и побежал npm install [email protected] jquery popper.js --save
и изменил .angular-cli.json связанные части, как показано ниже

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

однако получаю ошибку ниже

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

есть идеи, как это исправить?

4b9b3361

Ответ 1

Посмотрев документы на https://getbootstrap.com/docs/4.2/getting-started/introduction/#js, вы увидите, что они импортируют следующее:

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

Обратите внимание на название: jquery.slim.min.js, umd/popper.min.js!

Поэтому я использовал следующее в .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"
      ],

После этого, похоже, сейчас работает.

Ответ 2

У меня была та же проблема. Мое решение было не импортировать папку dist (./ node_modules/popper.js/dist/popper.js), а скорее umd-папку (./node_modules/popper.js/dist/umd/popper.js). Не имеет значения, получаете ли вы мини-или нормальную версию js файла.

Ответ 3

Я вижу, что многие люди борются за добавление и правильное включение зависимостей Bootstrap 4 (jQuery, popper.js и т.д.). Но есть гораздо более легкое решение в виде https://ng-bootstrap.github.io.

ng-bootstrap предоставляет собственные директивы Angular, написанные с нуля. Положительным следствием является то, что: * вам не нужно включать и беспокоиться о jQuery, popper.js и т.д. * директивы предоставляют API, которые "имеют смысл" в мире Angular

Для тех, кто пытается использовать Bootstrap 4.beta с Angular - ng-bootstrap только что выпустил свою первую бета-версию, которая полностью совместима с Bootstrap 4.beta CSS

Ответ 4

У меня такая же проблема, и отстой... но если вы импортируете непосредственно на index.html в head tag, например, bootrstrap say's, а не с npm... вы получите хорошие результаты. которые не бросают проблемы... но это всего лишь патч. Но если у пользователя нет интернета, это еще одна история.

Ответ 5

Если вы работаете в Asp.net Mvc UMD также сделать вещь.

Как в fooobar.com/questions/1272178/... просто добавьте в BundleConfig.cs:

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

Кроме:

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

Ответ 6

Чтобы запустить модальный режим, измените цель с "es2015" на "es5" в 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"] 
}