【问题标题】:Jquery error '$ is not a function' in Node.jsNode.js 中的 Jquery 错误“$ 不是函数”
【发布时间】:2023-03-05 03:29:01
【问题描述】:

在将 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>

【问题讨论】:

  • require('jquery')(window) 是怎么回事?这不会返回一个jQuery object,包装window吗?
  • 对jquery有特殊需求吗?不讨厌 jquery,但我只是不明白为什么你需要它在服务器端。

标签: javascript jquery node.js jsdom


【解决方案1】:

require('jquery') 之后去掉(window),所以它应该是:

var $ = jQuery = require('jquery');

你所写的是重新定义$jQuery,就好像你已经完成了:

jQuery = require('jquery');
var $ = jQuery = jQuery(window);

顺便说一句,您不能像这样通过链接assignments 来声明两个变量。只有第一个变量是在本地声明的,第二个是没有声明的赋值。如果要声明两个变量并赋予它们相同的值,请分两步进行:

var $, jQuery;
$ = jQuery = require('jquery');

【讨论】:

    猜你喜欢
    • 2016-03-10
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2019-08-02
    • 2021-05-01
    相关资源
    最近更新 更多