如果我在多个模块中使用require
jquery
,我该如何node
?我应该将它定义为全局还是应该在我需要的每个模块中使用require('jquery
)`?
尝试使用该软件包时出错。
TypeError: Object function ( w ) {
if ( !w.document ) {
throw new Error( "jQuery requires a window with a document" );
}
return factory( w );
} has no method 'isArray'
它看起来像当前版本中的一个错误,因为它不应该根据官方文档检查我是否在浏览器中运行它。 another post中也提到了此问题。它适用于其中一个答案中提到的版本1.8.3
。
答案 0 :(得分:16)
要在节点中使用jquery,您需要安装两个单独的节点包。
安装:
npm install jquery
npm install jsdom
在代码中:
var jsdom = require("jsdom").jsdom;
global.$ = require('jquery/dist/jquery')(jsdom().createWindow());
或者,使用较新版本的jsdom:
require("jsdom").env("", function(err, window) {
if (err) {
console.error(err);
return;
}
var $ = require("jquery")(window);
});
使用global。$将使jquery对象($)在项目中全局可用。
答案 1 :(得分:13)
您可以像往常一样使用以下方式处理:
var $;
$ = require('jquery');
$('.tag').click(function() {
return console.log('clicked');
});
答案 2 :(得分:-6)
如果你正在使用jQuery用于客户端目的,我就是这样做的,而且我使用的是jade模板引擎在MEAN堆栈上。
我将通过index.jade在单页应用程序上使用所有jquery功能,我将像这样加载。
```
extends layout
block content
script(type='text/javascript', src="http://code.jquery.com/jquery-1.9.1.min.js")
div#container(style="min-width: 500px; height: 500px; margin: 0 auto")
script.
if (jQuery) {
console.log("jQuery library is loaded!");
} else {
console.log("jQuery library is not found!");
}
$(function () {
});
h1= title
p Welcome to #{title}
```