Node.js和jQuery:"ReferenceError:未定义$"错误.如何在服务器上的节点上使用jquery? [英] Node.js & JQuery: "ReferenceError: $ is not defined" error. How do I use jquery with node on the server?
问题描述
帮助!我正在尝试在我的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
您是否认为function
在var $ =
部分之前被执行?
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屋!