我使用以下行安装了jQuery for Node:
npm install jquery
在我的服务器端Node.js代码的开头,我把它:
var $ = require('jquery');
安装正常,模块在我的服务器上可见。现在,我正在尝试在同一个文件中执行此操作:
$.each(rows, function(num, row){
console.log(row.username);
});
但是我收到以下错误:
TypeError: Object function ( w ) {
if ( !w.document ) {
throw new Error( "jQuery requires a window with a document" );
}
return factory( w );
} has no method 'each'
at Query._callback (/home/lights/public_html/apps/node_servers/fircik_gamelist.js:69:5)
它说'我没有方法',我不明白,因为很明显,jQuery应该有这种方法。在安装jQuery模块之前,我尝试运行相同的代码并且它给出了错误ReferenceError: $ is not defined
,并且在安装成功完成后该错误不再存在。
那我在这里错过了什么?
当它说'jQuery需要一个带文档的窗口'时,它是什么意思?
答案 0 :(得分:1)
jQuery是为客户端javascript(在Web浏览器中运行的javascript)创建的库。在webbrowser中运行的Javascript具有window
和document
对象。在服务器上运行的Javascript(Node.js)没有(因为它当然没有window
或document
。)。
这可能是jQuery在服务器端不起作用的原因。
您还可以使用本机javascript循环遍历数组元素:
for(var i = 0; i < rows.length; i++) {
console.log(rows[i].username);
}
或者(如Pointy所指出的)使用Array原型上的本地.forEach()函数:
rows.forEach(function(row) {
console.log(row.username);
});