Манипулируя jQuery, чтобы получить ошибку: «jQuery требуется окно и документ» - PullRequest
3 голосов
/ 20 февраля 2020

Если кто-нибудь пролистал несжатую версию jQuery, он может столкнуться с чем-то вроде:

if ( typeof module === "object" && typeof module.exports === "object" ) {

        // For CommonJS and CommonJS-like environments where a proper `window`
        // is present, execute the factory and get jQuery.
        // For environments that do not have a `window` with a `document`
        // (such as Node.js), expose a factory as module.exports.
        // This accentuates the need for the creation of a real `window`.
        // e.g. var jQuery = require("jquery")(window);
        // See ticket #14549 for more info.
        module.exports = global.document ?
            factory( global, true ) :
            function( w ) {
                if ( !w.document ) {
                    throw new Error( "jQuery requires a window with a document" );
                }
                return factory( w );
            };
    } else {
        factory( global );
    }

Обратите внимание на часть throw new Error(). Если я не ошибаюсь, он выдает ошибку, только если нет окна и документа. Я знаю, что такие вещи, как Node.js, могут вызвать эту ошибку, но может ли нормальная веб-страница HTML, CSS и JS вызвать это каким-либо образом?

1 Ответ

0 голосов
/ 20 февраля 2020
  1. Node.js не выдаст здесь ошибку, поскольку содержит глобальный объект с «документом» внутри; Вы можете использовать jquery с Node.js.

  2. Было бы лучше использовать Cherrio JS, который специально разработан для того, чтобы быть "похожим на jQuery, но для сервера.

  3. Попытки использовать jQuery с « Электрон JS» или « Без головки Chrome "являются примерами, в которых эта ошибка будет генерироваться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...