首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未捕获的ReferenceError: jQuery在计算时未定义

未捕获的ReferenceError: jQuery在计算时未定义
EN

Stack Overflow用户
提问于 2021-06-27 16:32:15
回答 1查看 212关注 0票数 1

我已经在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

代码语言:javascript
复制
(function ($) {
    'use strict';

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

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

})(jQuery);

main.js

代码语言:javascript
复制
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')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-27 18:13:41

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

jQuery赋值移到import之上是不正确的,因为规范会提升import语句。

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

更正确的方法是在模块化环境中不依赖全局变量,并将其导入依赖于全局变量的模块中:

代码语言:javascript
复制
import jQuery from 'jquery';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68149344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档