การพึ่งพา Bootstrap4 PopperJs แสดงข้อผิดพลาดบน Angular


96

ฉันเพิ่งสร้างแบรนด์ใหม่ โปรเจ็กต์
และรัน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

ฉันไม่แน่ใจว่าจะช่วยได้มากแค่ไหน แต่คุณสามารถดูคำถามนี้ได้ในหน้านี้มีคำถามเกี่ยวกับวิธีการเพิ่ม libs บุคคลที่สาม
Rahul Singh

คำตอบ:


226

ดูเอกสารที่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"
      ],

หลังจากนั้นดูเหมือนว่าจะทำงานในขณะนี้


คุณมีอะไรใน package.json สำหรับ jquery? ในโฟลเดอร์ node_modules jquery ของฉันฉันไม่มี jquery.slim.min.js ที่จริงเพิ่งพบใน jquery 3.2.1
Jim Culverwell

2
package.json ของฉันมีลักษณะดังนี้สำหรับ jquery: "" jquery ":" ^ 3.2.1 "` ฉันได้ทดสอบกับ jquery เวอร์ชันเต็มด้วยดูเหมือนว่าจะใช้งานได้เช่นกัน เฉพาะ ** umd ** / popper.min.js เท่านั้นที่จำเป็น
มาร์ตินบาวเออร์

2
คำตอบนี้มี 76 upvotes ... dev ให้ "RTFM" ที่น่ารังเกียจ / ใกล้เคียงกับปัญหา Github ที่ถามคำถามเดียวกัน😂
brandones

4
การใช้ jQuery-slim หรือไม่ไม่สำคัญ แต่การใช้ popper.js เวอร์ชัน umd ได้รับการแก้ไขแล้วขอบคุณ!
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 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
คำถามเกี่ยวกับ Angular และ angular-cli จึงไม่แน่ใจว่าทำไม AngularJS จึงถูกนำมาที่นี่ ...
pkozlowski.opensource

1

หากคุณทำงานใน Asp.net Mvc umdก็ทำสิ่งนั้นเช่นกัน

ในhttps://stackoverflow.com/a/50839939/8497522เพียงเพิ่ม BundleConfig.cs:

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

ยกเว้น:

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

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"] 
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.