web-dev-qa-db-fra.com

Comment utiliser le module npm jquery?

Comment dois-je requirele jquery dans node si je l'utilise dans plusieurs modules? Dois-je le définir comme global ou dois-je simplement utiliser le require('jquery) `dans chaque module j'en ai besoin?

Je reçois une erreur lorsque j'essaie d'utiliser le package.

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

Il ressemble à un bogue dans la version actuelle car il ne devrait pas vérifier si je l'exécute dans un navigateur selon la documentation officielle. Ce problème est également mentionné dans n autre article . Il fonctionne avec la version 1.8.3 comme mentionné dans l'une des réponses.

19
Pio

Pour utiliser jquery dans le nœud, vous devez disposer de deux installations de packages de nœuds distinctes.

  1. jquery
  2. jsdom pour créer un objet fenêtre factice que jquery peut utiliser.

Installation:

npm install jquery
npm install jsdom

Dans du code:

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

Ou, avec les nouvelles versions de jsdom:

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }

    var $ = require("jquery")(window);
});

L'utilisation de global. $ Rendra l'objet jquery ($) disponible globalement dans votre projet.

16
agaase

Vous pouvez utiliser comme ci-dessous pour gérer comme d'habitude:

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