如何通过导入解决“jQuery 需要一个带有文档的窗口”
Posted
技术标签:
【中文标题】如何通过导入解决“jQuery 需要一个带有文档的窗口”【英文标题】:How to resolve "jQuery requires a window with a document" with import 【发布时间】:2018-07-05 04:51:38 【问题描述】:我收到jQuery requires a window with a document
错误,我似乎需要一个类似的答案:Error: jQuery requires a window with a document
我正在寻找的是使用 import
而不是 require
的正确语法,因为我的 Node 应用程序中没有 require
-ing 其他任何东西。我试图让它在 React 组件中工作。我试过了:
import jsdom from 'jsdom';
import $ from 'jquery';
jsdom.jsdom().createWindow();
和:
import jsdom from 'jsdom';
const $ = require('jquery')(jsdom.jsdom().createWindow());
但这并没有让我到达那里。我该如何解决这个问题?
【问题讨论】:
1.你正在使用反应。惊讶地发现你需要 jquery。在大多数情况下,您不会,请参阅youmightnotneedjquery.com 2. require-ing 与 import-ing 取决于您的捆绑器以及它可以解决什么以及如何解决它。查看npmjs.com/package/jquery,了解如何为您的捆绑程序包含 jquery。 3. 看起来你的问题更像是一个真正的问题,如果需要的话,我会去的。 正如@AhmedMusallam 所说,require
可能更适合您。你试过吗:const $ = require('jquery')(jsdom.jsdom().createWindow());
?
【参考方案1】:
注意:这只适用于旧版本的 jsdom。
我这样做是为了tests for using jQuery Mockjax in a Node context。本质上,我使用 jsdom env()
方法生成带有空白 html 文档的 window 对象:
const jsdom = require('jsdom');
let $;
jsdom.env('<html></html>', function (error, window)
if (error)
// handle this somehow
else
$ = require('jquery')(window);
// now you have it...
);
【讨论】:
(显然我没有使用 ES6import
s,但我认为您可以从我所拥有的中找到解决方案。)
"_jsdom2.default.env 不是函数" 谢谢,但我得到了这个错误。
啊...我使用的是一个非常旧的版本。 ;)以上是关于如何通过导入解决“jQuery 需要一个带有文档的窗口”的主要内容,如果未能解决你的问题,请参考以下文章
java项目(java project)如何导入jar包的解决方案列表