Bootstrap พ่นข้อผิดพลาดที่ไม่ได้ตรวจ: JavaScript ของ Bootstrap ต้องการ jQuery [ปิด]


172

ฉันพยายามใช้ Bootstrap เพื่อสร้างอินเตอร์เฟสสำหรับโปรแกรม ฉันเพิ่ม jQuery 1.11.0 ไปยัง<head>แท็กและคิดว่าเป็นเช่นนั้น แต่เมื่อฉันเปิดหน้าเว็บในเบราว์เซอร์ jQuery รายงานข้อผิดพลาด:

Uncaught Error: Bootstrap's JavaScript requires jQuery

ฉันได้ลองใช้ jQuery 1.9.0 ฉันได้ลองกับสำเนาที่โฮสต์ใน CDN หลายแห่ง แต่ฉันไม่สามารถใช้งานได้ ใครช่วยชี้สิ่งที่ฉันทำผิดได้ไหม


28
รวม jQuery ก่อน Bootstrap ...
Adriano Repetti

ในกรณีของฉันฉันติดตั้ง jquery ก่อน bootstrap แล้วก็ทำงานได้ดี ก่อนหน้านี้รวมถึง bootstrap ไม่สามารถแก้ไขข้อผิดพลาดได้
Stuti Verma

ฉันกรณีของฉันแทนการเพิ่ม jquery ในส่วนท้าย (เช่นในแม่แบบ bootstrap); ฉันเพิ่มไว้ในส่วนหัว แก้ไขปัญหา
Adeel Raza Azeemi

1
เพียงเพิ่ม<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js" integrity="sha256-xNzN2a4ltkB44Mc/Jz3pT4iU1cmeR0FkXs4pru/JxaQ=" crossorigin="anonymous"></script>ก่อนที่สคริปต์นำเข้า bootstrap คัดลอก CDN ล่าสุดที่นี่: cdnjs.com/l ไลบรารี/jquery
Tina Lee

คำตอบ:


373

ลองสิ่งนี้

เปลี่ยนลำดับของไฟล์ควรเป็นดังนี้ ..

<script src="js/jquery-1.11.0.min.js"></script>
<script src="js/bootstrap.min.js"></script>
<script src="js/wow.min.js"></script>

85
ไม่ได้ผลสำหรับฉัน ฉันมี jQuery ก่อน Bootstrap และได้รับข้อผิดพลาด!
Green

2
ทำงานได้ แต่มีแถบเลื่อนแนวนอนที่ด้านล่าง
HimalayanCoder

1
ถ้ามันไม่ทำงานจากนี้ .. อาจเป็นไปได้ว่า jQuery ได้รับการติดตั้งผ่าน Bower และคุณอาจต้องดูภายใต้ bower_components / jquery / dist / jquery.js .. ส่วน "dist" ที่ฉันได้มองข้ามไป
Jax Cavalera

ทำงานให้ฉันสำหรับโครงการ Django-Oscar ข้อผิดพลาดนี้เริ่มปรากฏขึ้นออกจากฟ้า ฉันคิดว่ายุ่งกับรหัสที่ไม่เกี่ยวข้องอย่างสมบูรณ์สามารถเปลี่ยนลำดับการแสดงผลและเรียกข้อผิดพลาดนี้
MadPhysicist

เห็นได้ชัดว่าฉันไม่ได้สังเกตเห็นว่าฉันมี bootstrap.js รวมสองครั้ง - ครั้งแรกมันเป็นวิธีก่อนแบบสอบถาม
JJ Roman

91

หากคุณอยู่ในสภาพแวดล้อมที่มีเฉพาะเบราว์เซอร์ให้ใช้โซลูชันของSridharR

หากคุณอยู่ในสภาพแวดล้อม Node / CommonJS + Browser (เช่นอิเล็กตรอน, node-webkit ฯลฯ ); เหตุผลสำหรับข้อผิดพลาดนี้คือตรรกะการส่งออกของ jQuery ตรวจสอบครั้งแรกmoduleไม่ใช่window:

if (typeof module === "object" && typeof module.exports === "object") {
    // CommonJS/Node
} else {
    // window
}

โปรดทราบว่ามันส่งออกตัวเองผ่านทางmodule.exportsในกรณีนี้ เพื่อให้jQueryและไม่ได้รับมอบหมายให้ $window

ดังนั้นเพื่อแก้ไขปัญหานี้แทน<script src="path/to/jquery.js"></script>;

เพียงกำหนดด้วยตัวคุณเองด้วยrequireข้อความ:

<script>
    window.jQuery = window.$ = require('jquery');
</script>

หมายเหตุ: หากแอปอิเล็กตรอนของคุณไม่ต้องการnodeIntegrationให้ตั้งค่าเป็นfalseดังนั้นคุณจะไม่ต้องการวิธีแก้ปัญหานี้


3
window.jQuery = window.$ = require('jquery');สิ่งนี้ได้ผลสำหรับฉันที่พยายามรวบรวมบรันช์บิวด์ด้วย jQuery 2 และ Bootstrap 3 ใช้เวลาหลายชั่วโมงในการหาคำตอบของคุณ :( ข้อกำหนดนี้เปลี่ยนไปใน jQuery รุ่นที่ใหม่กว่าไหม?
rikkit

1
ฉันไม่รู้ แต่เนื่องจากนี่ไม่ใช่ข้อผิดพลาดฉันจึงไม่คิดอย่างนั้น หากแอปอิเล็กตรอนของคุณไม่ต้องการnodeIntegrationให้ตั้งเป็นfalseดังนั้นคุณจะไม่ต้องการวิธีแก้ปัญหานี้
Onur Yıldırım

1
คุณต้องติดตั้ง jquery โดยnpm install jqueryไม่ใช้bower
syodage

1
มีประโยชน์ในการดูว่าอิเล็กตรอนเกี่ยวข้องกับห้องสมุดต่างจากแอพที่ใช้หน้าต่างเป็น
อย่างไร

ฉันยังไม่เข้าใจ แต่ Laravel ใช้วิธีการเดียวกัน: github.com/laravel/laravel/blob/v5.7.0/resources/js/…
Ryan

14

คุณควรโหลด jquery ก่อนเพราะ bootstrap ใช้คุณสมบัติ jquery แบบนี้:

<!doctype html>
<html>
    <head>
        <link type="text/css" rel="stylesheet" src="css/animate.css">
        <link type="text/css" rel="stylesheet" src="css/bootstrap-theme.min.css">
        <link type="text/css" rel="stylesheet" src="css/bootstrap.min.css">
        <link type="text/css" rel="stylesheet" href="css/custom.css">

<!--   Shuffle your scripts HERE  -->
        <script src="js/jquery-1.11.0.min.js"></script>
        <script src="js/bootstrap.min.js"></script>
        <script src="js/wow.min.js"></script>
<!--   End  -->   

        <title>pyMeLy Interface</title>
    </head>
    <body>
        <p class="title1"><strong>pyMeLy</strong></p>
        <p class="title2"><em> A stylish way to view your media</em></p>
        <div style="text-align:center;">
            <button type="button" class="btn btn-primary">Movies</button>
            <button type="button" class="btn btn-primary btn-lg">Large button</button>
        </div>
    </body>
</html>

7

คุณต้องเพิ่ม JQuery ก่อนที่จะเพิ่ม bootstrap-

<!-- JQuery Core JavaScript -->
<script src="lib/js/jquery.min.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="lib/js/bootstrap.min.js"></script>

4

คุณระบุลำดับที่ไม่ถูกต้องสำหรับ JAVASCRIPT และ BOOTSTRAP

โดยหลักการ bootstrap ต้องเป็นไปตามข้อกำหนดของไฟล์ jquery

<!-- JQuery Core JavaScript -->
<script src="lib/js/jquery.min.js"></script>
<script src="lib/js/jquery-ui.min.js"></script>
<!-- Bootstrap Core JavaScript -->
<script src="lib/js/bootstrap.min.js"></script>

1

ในกรณีของฉันเป็นวิธีแก้ปัญหาที่โง่และแปลก

โค้ดด้านล่างมีการเติมข้อมูลล่วงหน้าโดยไฟล์ _Layout.cshtml (ไม่ได้เขียนโดยฉัน)

<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>

แต่เมื่อฉันตรวจสอบในโฟลเดอร์สคริปต์ jquery-1.10.2.min.js ก็ไม่สามารถใช้ได้ ดังนั้นรหัสแทนที่เช่นด้านล่างโดยที่ jquery-1.9.1.min.js เป็นไฟล์ที่มีอยู่:

<script src="~/Scripts/jquery-1.9.1.min.js"></script>
<script src="~/Scripts/bootstrap.min.js"></script>

1

ฉันใช้ NodeJS และได้รับข้อผิดพลาดเดียวกัน เช่นเดียวกับคำตอบอื่น ๆ ปัญหาก็เป็นเพราะ JQuery จำเป็นต้องโหลดก่อน Bootstrap; แต่เนื่องจากลักษณะ NodeJS การเปลี่ยนแปลงนี้จะต้องมีการ aplied ในไฟล์ pipeline.js

การเปลี่ยนแปลงไปป์ไลน์.jsเป็นดังนี้:

var jsFilesToInject = [
  // Dependencies like jQuery, or Angular are brought in here
  'js/dependencies/angular.1.3.js',
  'js/dependencies/jquery.js',
  'js/dependencies/bootstrap.js',
  'js/dependencies/**/*.js',
];

ฉันยังใช้เสียงฮึดฮัดที่จะช่วยและมันเปลี่ยนลำดับโดยอัตโนมัติในหน้า html หลัก:

<!--SCRIPTS-->
  <script src="/js/dependencies/angular.1.3.js"></script>
  <script src="/js/dependencies/jquery.js"></script>
  <script src="/js/dependencies/bootstrap.js"></script>
  <!-- other dependencies -->
<!--SCRIPTS END-->

หวังว่ามันจะช่วย! คุณไม่ได้พูดว่าสภาพแวดล้อมของคุณเป็นอย่างไรฉันจึงตัดสินใจโพสต์คำตอบนี้


1

หากคุณกำลังใช้require.jsเกินจำเป็นต้องเพิ่ม window.$ = window.jQuery = require('jquery')ใน app.js

หรือคุณสามารถทำการโหลดไฟล์ที่ขึ้นต่อกันหลังจากโหลดไฟล์หลัก .. เช่นแนวคิดด้านล่าง

require.config({
    baseUrl: "scripts/appScript",
    paths: {
        'jquery':'jQuery/jquery.min',
        'bootstrap':'bootstrap/bootstrap.min' 
    },
   shim
    shim: {
        'bootstrap':['jquery'],
        },

    // kick start application
    deps: ['app']
});

รหัสด้านบนแสดงให้เห็นว่าbootstrapมันขึ้นอยู่กับJqueryดังนั้นฉันได้เพิ่มเข้าไปshimและทำให้มันขึ้นอยู่กับ


0

หากรหัสของคุณดูดีให้ยืนยันว่าโหลด jQuery ไปยังเซิร์ฟเวอร์ของคุณสำเร็จ ในกรณีของฉันไฟล์ jQuery ถูกเผยแพร่ไปยังเซิร์ฟเวอร์โดย IDE ของฉัน แต่เว็บเซิร์ฟเวอร์มี stub ไฟล์ 0 KB เท่านั้น ไม่มีเนื้อหาเซิร์ฟเวอร์ล้มเหลวในการให้บริการไฟล์ไปยังเบราว์เซอร์

หลังจากเผยแพร่ไฟล์อีกครั้งและตรวจสอบว่าเซิร์ฟเวอร์ได้รับไฟล์จริงทั้งหมดจากนั้นหน้าเว็บของฉันหยุดให้ข้อผิดพลาดแก่ฉัน


0

คุณต้องเพิ่ม JQuery js ก่อนเพิ่มไฟล์ bootstrap js เนื่องจาก BootStrap ใช้ฟังก์ชัน jqueries ดังนั้นตรวจสอบให้แน่ใจว่าได้โหลด jquery js ก่อนแล้วจึงบู๊ตไฟล์ js

<!-- JQuery Core JavaScript -->
<script src="app/js/jquery.min.js"></script>

<!-- Bootstrap Core JavaScript -->
<script src="app/js/bootstrap.min.js"></script>

0

หากสิ่งนี้เกิดขึ้นกับอินทราเน็ต IE เท่านั้นให้ตรวจสอบการตั้งค่าความเข้ากันได้และยกเลิกการเลือก "แสดงอินทราเน็ตไซต์ในโหมดความเข้ากันได้"

IE -> การตั้งค่า -> ความเข้ากันได้

ป้อนคำอธิบายรูปภาพที่นี่


0

บนเอกสารอย่างเป็นทางการ: https://electronjs.org/docs/faq#i-can-not-use-jqueryrequirejsmeteorangularjs-in-electron

<head>
  <script>
  window.nodeRequire = require;
  delete window.require;
  delete window.exports;
  delete window.module;
  </script>
  <script type="text/javascript" src="jquery.js"></script>
</head>

1
ฉันคงไว้ใน angular.json กับรหัส " "สคริปต์"[" node_modules / jQuery / อ / jquery.min.js " "node_modules / บูต / อ / js / bootstrap.min.js"]"
AntWo

0

ฉันได้ลองวิธีการเกือบทั้งหมดข้างต้นแล้ว

ในที่สุดก็แก้ไขได้โดยรวมถึง

script src="{%static 'App/js/jquery.js' %}"

หลังจากโหลด staticfiles เช่น{% load staticfiles %}ใน base.html


0

หลังจากดิ้นรนกับปัญหานี้ฉันใช้สามขั้นตอน:

  1. ใช้ jQuery เวอร์ชั่นใดก็ได้ระหว่าง 1.9.0 ถึง 3.0.0
  2. ประกาศไฟล์ jQuery ก่อนประกาศไฟล์ Bootstrap
  3. ประกาศทั้งสองไฟล์สคริปต์ที่ด้านล่างของแท็กมากกว่าใน<body></body> <head></head>สิ่งเหล่านี้ใช้ได้กับฉัน แต่อาจมีพฤติกรรมที่แตกต่างกันไปตามเบราว์เซอร์ที่คุณใช้
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.