Phụ thuộc Bootstrap4 PopperJs ném lỗi trên Angular


95

Tôi vừa tạo một thương hiệu mới dự án
và chạy npm install bootstrap@4.0.0-beta jquery popper.js --save
và thay đổi các phần liên quan của .angular-cli.json như bên dưới

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

tuy nhiên nhận được lỗi bên dưới

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

bất kỳ ý tưởng làm thế nào để sửa chữa nó?


kỳ quặc, tôi đã nhận nó để làm việc cho tôi. bạn đang sử dụng cli mới nhất? bạn có thể thử cài đặt lại node_modules
LLai

1
Các lỗi phải ở một nơi khác
brijmcq

@LLai @angular/cli: 1.3.0 node: 6.11.2 npm: 5.3.0bạn đã thay đổi các phần trong .angular-cli.json nếu không, bạn sẽ không thấy lỗi trong bảng điều khiển.
cilerler

vâng, tôi có kịch bản và phong cách chính xác của bạn. jquery@3.2.1 popper.js@1.11.1 bootstrap@4.0.0-beta
LLai

tôi ot chắc chắn bao nhiêu điều này sẽ giúp nhưng bạn có thể nhìn vào câu hỏi này về vấn đề này ở trang đó là một câu hỏi về cách thêm libs của bên thứ ba
Rahul Singh

Câu trả lời:


223

Nhìn vào tài liệu tại https://getbootstrap.com/docs/4.2/getting-started/introduction/#js, bạn có thể thấy rằng chúng nhập những thứ sau:

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

Lưu ý đặt tên: jquery. mỏng .min.js, UMD /popper.min.js!

Do đó, tôi đã sử dụng những điều sau đây trong .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"
      ],

Sau đó nó dường như hoạt động ngay bây giờ.


Bạn có gì trong package.json cho jquery? Trong thư mục jquery node_modules của tôi, tôi không có jquery.slim.min.js. Trên thực tế chỉ tìm thấy nó trong jquery 3.2.1
Jim Culverwell

2
Package.json của tôi trông như sau cho jquery: `" jquery ":" ^ 3.2.1 "` Tôi cũng đã testet nó với phiên bản jquery đầy đủ, có vẻ như nó cũng hoạt động. Chỉ có ** umd ** / popper.min.js là cần thiết.
Martin Bauer

2
Câu trả lời này có 76 upvotes ... dev đã đưa ra một nhân vật quái gở "RTFM" / gần một vấn đề Github hỏi cùng một câu hỏi 😂
brandones

4
Sử dụng jQuery-slim hay không không quan trọng, nhưng sử dụng phiên bản umd của popper.js đã khắc phục được lỗi đó, cảm ơn!
finstas

2
Sử dụng /dist/umdthay vì /distphụ thuộc popper đã làm một mẹo nhỏ. Cảm ơn.
redent84

50

Tôi đã từng gặp vấn đề tương tự. Giải pháp của tôi là không để nhập khẩu các thư mục dist-(./node_modules/popper.js/dist/popper.js) mà là UMD-thư mục (./node_modules/popper.js/dist/ UMD /popper.js). Không quan trọng nếu bạn nhận được phiên bản mini hay bình thường của tệp js.


3

Tôi có thể thấy rằng nhiều người đang đấu tranh với việc thêm và bao gồm đúng cách các phụ thuộc Bootstrap 4 (jQuery, popper.js, v.v.). Nhưng có một giải pháp dễ dàng hơn nhiều ở dạng https://ng-bootstrap.github.io .

ng-bootstrap cung cấp các chỉ thị Angular gốc được viết từ đầu. Kết quả tích cực là: * bạn không cần phải bao gồm và lo lắng về jQuery, popper.js, v.v. * các chỉ thị cung cấp các API "có ý nghĩa" trong thế giới Angular

Đối với bất kỳ ai đang cố gắng sử dụng Bootstrap 4.beta với Angular - ng-bootstrap vừa phát hành bản beta đầu tiên hoàn toàn tương thích với Bootstrap 4.beta CSS


Dễ dàng hơn nhiều nếu bạn đang sử dụng kiễu góc, nhưng không nếu bạn đang sử dụng AngularJS ...
El Mac

1
Vâng, câu hỏi là về góc và góc-cli vì vậy không chắc chắn lý do tại sao AngularJS đang được đưa lên đây ...
pkozlowski.opensource

1

Nếu bạn làm việc trong Asp.net Mvc umd cũng làm được điều đó.

Như trong https://stackoverflow.com/a/50839939/8497522 chỉ cần thêm vào BundleConfig.cs:

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

ngoại trừ:

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

0

Để chạy phương thức, vui lòng thay đổi mục tiêu từ "es2015" thành "es5" trong 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"] 
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.