帮助!我正在尝试在我的node.js应用程序中使用jquery,但是当我尝试使用'$'时,我不断收到错误,说“$未定义”......但我在顶部定义了它!这就是我所做的:
我从 npm 安装了这两个包,如下所示:
npm install jquery
npm install jsdom
然后我在我的 node.js 应用程序中需要它们:
require("jsdom").env("", function(err, window) {
if (err) {
console.error(err);
return;
}
var $ = require("jquery")(window);
});
doSomething();
然后我尝试像这样使用它:
function doSomething(){
var deferred = $.Deferred();
}
我收到以下错误:
var deferred = $.Deferred();
^
ReferenceError: $ is not defined
您认为function
正在被处决before the var $ =
part?
Thanks!
版本:
- 节点:4.2.6
- 快递:4.12.4
- jQuery:2.2.3
- JSDom:8.3.0
更新:解决方案
这是我根据大家的回答最终使用的!
var $;
require("jsdom").env("", function(err, window) {
if (err) {
console.error(err);
return;
}
$ = require("jquery")(window);
doSomething();
});
您的 doSomething 函数是在 jsdom.env 函数的边界之外声明的。 $ 只能在该回调内部访问。像这样的东西应该有效:
var $;
require("jsdom").env("", function(err, window) {
if (err) {
console.error(err);
return;
}
$ = require("jquery")(window);
doSomething();
});
function doSomething(){
var deferred = $.Deferred();
}
尽管我认为在回调中声明 doSomething 会更惯用。这样它就可以从外部范围访问 jquery。
require("jsdom").env("", function(err, window) {
if (err) {
console.error(err);
return;
}
function doSomething(){
var deferred = $.Deferred();
}
var $ = require("jquery")(window);
doSomething();
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)