Node.js和jQuery:"ReferenceError:未定义$"错误.如何在服务器上的节点上使用jquery? [英] Node.js & JQuery: "ReferenceError: $ is not defined" error. How do I use jquery with node on the server?

查看:127
本文介绍了Node.js和jQuery:"ReferenceError:未定义$"错误.如何在服务器上的节点上使用jquery?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

帮助!我正在尝试在我的node.js应用程序中使用jquery,但是当我尝试使用'$'时却不断出错,并说未定义$",但是我在顶部定义了它!这是我所做的:

Help! I'm trying to use jquery in my node.js app, but I keep getting an error when I try to use '$', saying "$ is not defined"... but I defined it at the top! Here's what I did:

我从npm安装了两个软件包,如下所示:

I installed both packages from npm like so:

npm install jquery
npm install jsdom

然后我在我的node.js应用程序中需要它们:

then I required them in my node.js app:

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }
    var $ = require("jquery")(window);
});
doSomething();

然后我要像这样使用它:

Then I'm trying to use it like so:

function doSomething(){
    var deferred = $.Deferred();
}

,我收到以下错误消息:

and I get the following error:

var deferred = $.Deferred();
               ^
ReferenceError: $ is not defined

您是否认为functionvar $ =部分之前被执行?

Do you think that the function is getting executed before the var $ = part?

谢谢!

版本:

  • 节点:4.2.6
  • 快递:4.12.4
  • JQuery:2.2.3
  • Jsm:8.3.0

这是我根据每个人的答案最终使用的!

Here's what I ended up using, based on everyone's answers!

var $;
require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }
    $ = require("jquery")(window);
    doSomething();
});

推荐答案

如果jsdom.env函数的边界在外部,则声明doSomething函数. $仅可在该回调内部访问.这样的事情应该起作用:

Your doSomething function is declared outside if the bounds of the jsdom.env function. $ is only accessible inside that callback. Something like this should work:

var $;

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }
    $ = require("jquery")(window);
    doSomething();
});

 function doSomething(){
    var deferred = $.Deferred();
}

尽管我认为只在回调内部声明doSomething会更加惯用.这样,它将可以从外部范围访问jquery.

Though I think it would be more idiomatic to just declare doSomething inside the callback. That way it would have access to jquery from the outer scope.

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }

    function doSomething(){
        var deferred = $.Deferred();
     }
    var $ = require("jquery")(window);
    doSomething();
});

这篇关于Node.js和jQuery:"ReferenceError:未定义$"错误.如何在服务器上的节点上使用jquery?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆