【问题标题】:Uncaught ReferenceError: jQuery is not defined at eval未捕获的 ReferenceError:jQuery 未在 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 文件。请看一下并提出您的宝贵建议。

标签: jquery vue.js vuejs2


【解决方案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文件中导入就可以了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2017-06-21
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
相关资源
最近更新 更多