Как использовать модуль npm jquery?

Как мне require jquery в node, если я использую его в нескольких модулях? Должен ли я определить его как глобальный или я должен использовать require('jquery) `в каждом модуле, в котором я нуждаюсь?

При попытке использовать пакет возникает ошибка.

TypeError: Object function ( w ) {
            if ( !w.document ) {
                throw new Error( "jQuery requires a window with a document" );
            }
            return factory( w );
        } has no method 'isArray'

Похоже на ошибку в текущей версии, поскольку она не должна проверять, запускаю ли я ее в браузере в соответствии с официальной документацией. Эта проблема также упоминается в другом сообщении. Он работает с версией 1.8.3, как указано в одном из ответов.

Ответы

Ответ 1

Чтобы использовать jquery в node, вам нужно иметь две отдельные установки пакета node.

  • jquery
  • jsdom для создания объекта фиктивного окна, который может использовать jquery.

Установка:

npm install jquery
npm install jsdom

В коде:

var jsdom = require("jsdom").jsdom;
global.$ = require('jquery/dist/jquery')(jsdom().createWindow());

Или с более новыми версиями jsdom:

var jsdom = require("jsdom").jsdom;
jsdom.env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }
    global.$ = require("jquery")(window);
})

Использование global. $сделает объект jquery ($) доступным глобально в вашем проекте.

Ответ 2

Вы можете использовать, как показано ниже, как обычно:

var $;
$ = require('jquery');
$('.tag').click(function() {
  return console.log('clicked');
});

Ответ 3

Если вы используете jQuery для клиентских целей, это то, как я это сделал, и я нахожусь в стеке MEAN, используя jade templating engine.

Например; Скажем, у меня есть простой макет. введите описание изображения здесь

Я буду использовать все jquery-функции в одном приложении с помощью index.jade, и я буду загружать, как это.

введите описание изображения здесь

`` `

extends layout

block content
    script(type='text/javascript', src="http://code.jquery.com/jquery-1.9.1.min.js")

    div#container(style="min-width: 500px; height: 500px; margin: 0 auto")
    script.
        if (jQuery) {
            console.log("jQuery library is loaded!");
        } else {
            console.log("jQuery library is not found!");
        }

        $(function () {

        });


    h1= title
    p Welcome to #{title}

`` `