Залежність Bootstrap4 PopperJs видає помилку на Angular


95

Я щойно створив абсолютно нову проекту
та запустив npm install bootstrap@4.0.0-beta 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

будь-яка ідея, як це виправити?


дивно, я змусив це працювати для мене. ти використовуєш останню версію cli? ти можеш спробувати перевстановити node_modules
LLai

1
Помилка має бути десь в іншому місці
brijmcq

@LLai @angular/cli: 1.3.0 node: 6.11.2 npm: 5.3.0ви змінили деталі в .angular-cli.json, якщо цього не зробили, ви не побачите помилку в консолі.
cilerler

так, я маю ваші точні сценарії та стилі. jquery@3.2.1 popper.js@1.11.1 bootstrap@4.0.0-beta
LLai

я впевнений, наскільки це допоможе, але ви можете поглянути на це питання на цій сторінці , є питання про те, як додати сторонні ліби
Рахул Сінгх

Відповіді:


223

Переглядаючи документи на 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. тонкий .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"
      ],

Після цього, здається, це працює зараз.


Що у вас є у ваших пакетах.json для jquery? У моїй папці jquery node_modules у мене не було jquery.slim.min.js. Насправді щойно знайшов у jquery 3.2.1
Джим Калвервелл

2
Мій пакет.json виглядає для jquery наступним чином: `" jquery ":" ^ 3.2.1 "` Я тестував його також із повною версією jquery, здається, він також працює. Потрібним є лише ** umd ** / popper.min.js.
Мартін Бауер

2
Ця відповідь має 76 голосів проти ... розробник дав хиткий "RTFM" / близький до питання Github, задаючи те саме запитання 😂
brandones

4
Використання jQuery-slim чи ні, не має значення, але використання umd-версії popper.js це виправило, дякую!
finstas

2
Використання /dist/umdзамість /distзалежності popper зробило свою справу. Дякую.
redent84

50

У мене була та сама проблема. Моє рішення було НЕ імпортувати 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


Набагато простіше, якщо ви використовуєте Angular, але ні, якщо ви використовуєте AngularJS ...
El Mac,

1
Ну, питання
стосувалося


0

Щоб запустити модальний, будь ласка, змініть ціль з "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"] 
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.