ES6+jQuery+Bootstrap-未捕获引用错误:未定义jQuery
ES6 + jQuery + Bootstrap - Uncaught ReferenceError: jQuery is not defined?
如何导入jQuery作为ES6中引导程序的依赖项?
我尝试过:
import {$,jQuery} from 'jquery';
import bootstrap from 'bootstrap';
但我总是遇到这样的错误:
transition.js:59未捕获引用错误:jQuery未定义
哪个指向这个文件:
/* ========================================================================
* Bootstrap: transition.js v3.3.7
* http://getbootstrap.com/javascript/#transitions
* ========================================================================
* Copyright 2011-2016 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */
+function ($) {
'use strict';
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
// ============================================================
function transitionEnd() {
var el = document.createElement('bootstrap')
var transEndEventNames = {
WebkitTransition : 'webkitTransitionEnd',
MozTransition : 'transitionend',
OTransition : 'oTransitionEnd otransitionend',
transition : 'transitionend'
}
for (var name in transEndEventNames) {
if (el.style[name] !== undefined) {
return { end: transEndEventNames[name] }
}
}
return false // explicit for ie8 ( ._.)
}
// http://blog.alexmaccaw.com/css-transitions
$.fn.emulateTransitionEnd = function (duration) {
var called = false
var $el = this
$(this).one('bsTransitionEnd', function () { called = true })
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
setTimeout(callback, duration)
return this
}
$(function () {
$.support.transition = transitionEnd()
if (!$.support.transition) return
$.event.special.bsTransitionEnd = {
bindType: $.support.transition.end,
delegateType: $.support.transition.end,
handle: function (e) {
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
}
}
})
}(jQuery);
有什么想法吗?
编辑:
我的吞咽文件:
var gulp = require('gulp');
var browserify = require('browserify');
var babelify = require('babelify');
var source = require('vinyl-source-stream');
var gutil = require('gulp-util');
gulp.task('es6', function() {
browserify({
entries: 'js/app.js',
debug: true
})
.transform(babelify, { presets: ['es2015'] })
.on('error',gutil.log)
.bundle()
.on('error',gutil.log)
.pipe(source('compile.js'))
.pipe(gulp.dest('js'));
});
gulp.task('default', ['es6']);
编辑2:
package.json:
{
"name": "es6",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo '"Error: no test specified'" && exit 1"
},
"author": "",
"license": "ISC",
"devDependencies": {
"babel-preset-es2015": "^6.16.0",
"babelify": "^7.3.0",
"browserify": "^13.1.0",
"gulp": "^3.9.1",
"gulp-uglify": "^2.0.0",
"gulp-util": "^3.0.7",
"pump": "^1.0.1",
"vinyl-source-stream": "^1.1.0"
},
"browser": {
"jquery": "./node_modules/jquery/dist/jquery.js",
},
"browserify-shim": {
"jquery": "$", // or change it to jQuery
},
"browserify": {
"transform": [
"browserify-shim"
]
}
}
错误:
正在启动"生成"。。。events.js:160投掷者;//未处理的"错误"事件^
错误:SyntaxError:JSON中位置526处的意外令牌},而解析json文件
我试过这个答案,它成功了。
// webpack.config.js
module.exports = {
...
plugins: [
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery"
})
]
};
通常,您在import
中执行的析构函数是不对的,因为$
或jQuery
对象是主要对象:
import $ from 'jquery';
// or
import jQuery from 'jquery'
在您的案例中,您正在处理一个模块(boostrap-transition
(,它确实希望使用全局范围内的jQuery。不久前,我在materialize
模块上也遇到了类似的问题。
如果您正在使用webpack
,您可以按照@galkowskit的回答步骤进行操作
如果您使用browserify
,您需要的是browserify transform
,如下所示:
"browser": {
"jquery": "./node_modules/jquery/dist/jquery.js",
},
"browserify-shim": {
"jquery": "$", // or change it to jQuery
},
"browserify": {
"transform": [
"browserify-shim"
]
}
您可以将其放入package.json
文件中:当Gulp要调用browserify
时,它将读取package.json
以获取配置提示,并为jQuery执行此填充程序。
在我通常使用的Webpack中(webpack.config.js
(:
externals: {
jquery: "jQuery"
}
然后:
import jQuery from 'jQuery';
你也可以试试:
import * as jQuery from 'jQuery';
如果您在es6中使用curley括号,则表示您只想要该模块返回的几个段中的那个段。Jquery只公开了一件事,因此您可以执行以下操作:import $ from 'jquery';
或import jQuery from 'jquery';
它将始终暴露给一个默认变量
import jQuery from 'jquery';
或
import $ from 'jquery';
- Jquery未定义函数正在停止其他操作
- Wordpress中带有JQuery Accordion的未定义匿名函数
- JQuery-在本地工作,但未定义$,仅在部署的站点上定义
- 未定义 JQuery 函数
- JavaScript运行时错误,未定义jQuery
- '$'未定义Jquery ajax请求-javascript导入
- 未定义 jQuery 输入参数
- DOM 元素属性未定义 - jquery / ruby on rails.
- javascript 错误:未定义 jQuery 和无效的正则表达式:缺少 /
- 未捕获的引用错误:未定义 jQuery
- 未定义 jQuery,并且 jquery 冲突
- 未捕获的引用错误:未定义 jQuery
- 动态添加脚本时未定义$/jQuery
- 函数未定义-jQuery/Javascript
- a.nodeName未定义Jquery错误
- ES6+jQuery+Bootstrap-未捕获引用错误:未定义jQuery
- 未定义jQuery后添加无冲突js
- 奇怪的未定义jquery错误
- 不能读取property 'top'的未定义- jQuery
- 如果函数内部未定义jQuery