将 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,因为它明确需要 windowwindow.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 一起使用时的基本错误的主要内容,如果未能解决你的问题,请参考以下文章

悬停时的Jquery不起作用

将 Nodejs 与 Typescript 一起使用

在哪里以及如何将 nodejs 与 angularjs 一起使用

将 JWT 与 nodejs 和 express 一起使用

将 PostgreSQL JSON 类型与 NodeJS 一起使用的最佳方法是啥

将 NodeJs 与 Firebase 一起使用 - 安全性