Ответ 1
Вы не можете использовать jquery на сервере, поскольку он явно требует window
и window.document
. Попробуйте cheerio
Я пытаюсь использовать некоторый jquery в моем проекте, и как только я попытался использовать его, я наткнулся на ошибку в скопированном коде и не могу получить какую-либо помощь Google по ней.
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());
Вы не можете использовать jquery на сервере, поскольку он явно требует window
и window.document
. Попробуйте cheerio
попробовать:
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 в браузере.
У меня была та же проблема. Чтобы решить эту проблему, я установил более старую версию jquery:
npm install [email protected]
Он работал очень хорошо в течение многих месяцев. Но потом они что-то изменили, а теперь нет. Я мог нормально работать с jquery без окна, и он отлично работал на node js. Но по какой-то причине не с последней версией. Очень странно.
То, что мы пытаемся сделать, это просто:
$= require ( "jquery" ); $ ( "..). find (". message "). html (" Hello World! ");