当使用Jquery和Jsdom时,我得到了控制台错误'$不是一个函数‘。我使用的是最新的Jquery版本3.3.1和Jsdom 13.2.0。我使用Browserify也是为了利用require。
main.js
var jsdom = require('jsdom');
const { JSDOM } = jsdom;
const { window } = new JSDOM();
const { document } = (new JSDOM('')).window;
global.document = document;
var $ = jQuery = require('jquery')(window);
$("body").click(function() {
$("#name-tag").fadeOut("slow", function() {
// Animation complete.
});
});
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, initial-scale = 1.0, maximum-scale=1.0, user-scalable=no"
/>
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<link rel="stylesheet" href="scss/styles.css" />
<script src="js/bundle.js"></script>
</head>
<body>
<div id="name-tag">
<h1>Hello World</h1>
</div>
</body>
</html>
发布于 2019-03-01 08:52:37
在require('jquery')
之后去掉(window)
,所以它应该是:
var $ = jQuery = require('jquery');
你所写的就是重新定义$
和jQuery
,就像你已经做的那样:
jQuery = require('jquery');
var $ = jQuery = jQuery(window);
顺便说一句,你不能通过这样链接assignments
来声明两个变量。只有第一个变量在本地声明,第二个变量是没有声明的赋值。如果要声明两个变量并赋予它们相同的值,请分两步完成:
var $, jQuery;
$ = jQuery = require('jquery');
https://stackoverflow.com/questions/54936246
复制相似问题