未捕获引用错误:未定义$- Laravel 9,维生素

8oomwypt  于 2023-03-13  发布在  其他
关注(0)|答案(4)|浏览(199)

我尝试在Laravel 9项目中导入jQuery,该项目是使用npm i jquery安装的
我得到了Uncaught ReferenceError: $ is not defined
在我app.blade.php

<!doctype html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    <!-- CSRF Token -->
    <meta name="csrf-token" content="{{ csrf_token() }}">

    <title>{{ config('app.name', 'Laravel') }}</title>

    <!-- Fonts -->
    <link rel="dns-prefetch" href="//fonts.gstatic.com">

    <!-- Scripts -->
    @vite(['resources/sass/app.scss', 'resources/js/app.js'])
</head>

在我另一个视图中,它扩展了app.blade.php

<script>
  $(function(){
      alert('jquery ok');
  })
</script>

resources/js/app.js
我试过各种方法
一个一个二个一个一个一个三个一个一个一个一个一个一个四个一个一个一个一个一个五个一个
什么都不管用。我该怎么办?
国家预防机制- 8.11.0节点- 16.16.0拉腊维尔/框架- 9.32.0虚拟机- 3.14

bkkx9g8r

bkkx9g8r1#

我的问题的答案可以在ReferenceError: $ is not defined, Jquery Import with vite中找到

<script type="module"> //type="module" is the important part
    $(function () {
        alert('jquery ok');
    })
</script>
z0qdvdin

z0qdvdin2#

您在哪里导入JQuery文件?(JS和CSS)
你的头部需要这样的东西:* (显然您必须指定这些文件的实际路径)*

<link href="./jquery-files/jquery-ui.css" rel="stylesheet">
<script src="./jquery-files/external/jquery/jquery.js"></script>
<script src="./jquery-files/jquery-ui.min.js"></script>

然后,您只需要使用一个脚本标记,如下所示:

<script type="text/javascript">

    $().ready(function () {
        //add all JQuery related code here!!
        alert('jquery ok'); //this will show an alert when the page is loaded
    });

</script>
af7jpaap

af7jpaap3#

如果您想使用javascript动态导入,因为有些页面可能不需要jQuery。

  • ViteJs*、WebPackLaravel Mix 等构建工具/捆绑包支持此功能。

在您的app.js

async function main() {
  const { default: jQuery } = await import('jquery')
  window.jquery = window.jQuery = window.$ = jQuery;

  // code that uses jQuery
  console.log('jQuery v', $().jquery);
}

main();

您可以将导入放在if语句中

async function main() {

  if (document.querySelector('.useJquery')) {
    const { default: jQuery } = await import('jquery')
    window.jquery = window.jQuery = window.$ = jQuery;

    // code that uses jQuery
    console.log('jQuery v', $().jquery);
  }
}

在任何需要jQuery的页面中,您都可以添加class="useJquery"
那么只有包含useJquery类的页面才会下载JQuery。

nfg76nw0

nfg76nw04#

对我来说,问题是如何在bootstrap.js上导入库。我更改了文件:

import _ from 'lodash';
// Since I'm using jquery from admin-lte 🤷 
import $ from 'admin-lte/plugins/jquery/jquery';
import * as Popper from 'popper.js';
// Since I'm using jquery from admin-lte 🤷 
import 'admin-lte/plugins/bootstrap/js/bootstrap'
window._ = _;
window.Popper = Popper.defaults;
window.$ = window.jQuery = $;

现在您可以使用

<script type="module">
    $(function () {
        console.log('Jquery loaded');    
    });
</script>

相关问题