未捕获的 ReferenceError:jQuery 未在 eval 中定义

Posted

技术标签:

【中文标题】未捕获的 ReferenceError:jQuery 未在 eval 中定义【英文标题】:Uncaught ReferenceError: jQuery is not defined at eval 【发布时间】:2021-09-09 22:21:02 【问题描述】:

我已经在 main.js 文件中导入了 jQuery,但它仍然抛出这个错误

Uncaught ReferenceError: jQuery is not defined at eval (navbar.js)

我无法解决这个问题。我尝试了所有可能的方法来导入 main.js

我在public/index.html 文件中使用了jQuery CDN 链接,这个错误消失了,但是navbar.js 文件中的导航栏脚本根本不起作用。

使用 npm npm install jquery --save 安装 jquery

navbar.js

(function ($) 
    'use strict';

    if ($.fn.kanglaNav) 
        $('#bigNavBar').kanglaNav();
    

    $(".kangla-navbar-toggler").on("click", function () 
        $(".top-header").toggleClass("z-index-reduce");
    );

)(jQuery);

main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import './assets/css/style.css'
import '../node_modules/bootstrap/dist/css/bootstrap.min.css'
import './assets/css/kangla-nav.min.css'
import './assets/css/animate.css'
import '../node_modules/magnific-popup/dist/magnific-popup.css'
import './assets/js/popper.min.js'
import '../node_modules/bootstrap/dist/js/bootstrap.min.js'
import './assets/js/kangla-nav.min.js'
import '../node_modules/magnific-popup/dist/jquery.magnific-popup.min.js'
import './assets/js/navbar.js'

const  $, jQuery  = require('jquery')
window.$ = $
window.jQuery = jQuery

new Vue(
    router,
    store,
    render: (h) => h(App)
).$mount('#app')

【问题讨论】:

不知道您的设置是什么以及如何加载脚本。该错误意味着在 navbar.js 运行时未评估 main.js。 @EstusFlask 我已经添加了完整的 main.js 文件。请看一下并提出您的宝贵建议。 【参考方案1】:

jQuery 全局变量在访问时未定义,因为在 window.jQuery = jQuery 之前评估了 import './assets/js/navbar.js' 行。 jquery 不包含 $ 等导出,全局变量将是 undefined 任何方式。

jQuery 赋值移动到 import 上方是不正确的,因为 import 语句被规范提升了。

解决此问题的一种方法是将window.jQuery = jQuery 移动到jquery.js 并在依赖它的模块之前导入它。

更正确的做法是在模块化环境中不依赖全局变量,将它们导入依赖它们的模块中:

import jQuery from 'jquery';

【讨论】:

谢谢,在需要的js文件中导入就可以了

以上是关于未捕获的 ReferenceError:jQuery 未在 eval 中定义的主要内容,如果未能解决你的问题,请参考以下文章

PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”

未捕获的 ReferenceError:“$ 未定义”[重复]

未捕获的 ReferenceError:未定义窗口

未捕获的 ReferenceError:未定义 url

未捕获的 ReferenceError:未定义 showCategory

未捕获的 ReferenceError:$ 未定义 [重复]