将 jquery 与 nodejs 一起使用时的基本错误
Posted
技术标签:
【中文标题】将 jquery 与 nodejs 一起使用时的基本错误【英文标题】:Basic error when using jquery with nodejs 【发布时间】:2014-01-16 22:06:45 【问题描述】:我正在尝试在我的项目中使用一些 jquery,但当我尝试使用它时,我在复制代码时遇到了一个错误,并且无法获得任何谷歌帮助
var jquery = require('jquery');
var $ = jquery.create();
^
TypeError: Object function ( w )
if ( !w.document )
throw new Error( "jQuery requires a window with a document" );
return factory( w );
has no method 'create'
长篇大论:
我正在尝试从我拥有的一些 html 中获取纯文本。
我希望使用.text()
应该可以做到这一点的函数。
我的结果代码应该是:
console.log($(data).text());
【问题讨论】:
您可能完全做错了事。你想做什么? 你在使用this库吗? 我在依赖项中添加了“jquery”:">= 0.0.0" 您似乎在服务器端使用 jQuery(所以在 node.js 内部),并且 jQuery 试图找到浏览器窗口的文档。但是由于您没有在浏览器中运行,因此找不到任何文档。恐怕 SLaks 的评论是正确的。 您是否在 Windows (OS) 上运行 【参考方案1】:尝试:
var jsdom = require("jsdom").jsdom;
var markup = '<html><body><h1 class="example">Hello World!</h1><p class="hello">Heya Big World!</body></html>';
var doc = jsdom(markup);
var window = doc.parentWindow;
var $ = require('jquery')(window)
console.log($('.example').text());
基本上,您可以使用 jsdom 模块从您的标记中创建一个 DOM,然后您可以像在浏览器中使用 jquery 一样使用它。
【讨论】:
感谢第 5 行var $ = require('jquery')(window)
将我的 jQuery Insane Asylum 之旅推迟了几周!【参考方案2】:
您不能在服务器上使用 jquery,因为它明确需要 window
和 window.document
。试试cheerio
【讨论】:
是的。好像我做不到。不幸的是,cheerio 没有简单的 html->plaintext 但我会继续寻找 这对我来说似乎没有意义。如果不能在服务器端使用 Node.js 的 jQuery 模块,它有什么用?我的意思是,如果我想在客户端使用它,那么我只需将它包含在页面上。 所以,Node.js 没有 jQuery,这就是问题所在。它在 npm 上的事实并没有使它成为 Node.js 模块。 有一些库可以让你在服务器端使用 jQuery:***.com/questions/1801160/…【参考方案3】:我遇到了同样的问题。为了解决这个问题,我安装了旧版本的 jquery:
npm install jquery@1.8.3
【讨论】:
【参考方案4】:过去几个月都可以正常工作。但后来他们改变了一些东西,现在没有了。我可以在没有窗口的情况下运行 jquery,它在节点 js 上运行良好。但由于某种原因,不是最新版本。真奇怪。
我们要做的就是这样:
$ = 要求("jquery"); $("..).find(".message").html("Hello World!");
【讨论】:
以上是关于将 jquery 与 nodejs 一起使用时的基本错误的主要内容,如果未能解决你的问题,请参考以下文章
在哪里以及如何将 nodejs 与 angularjs 一起使用