2017-05-12 1 views
1

J'ai jwplayer dans mon dossier lib/ car il n'y a pas de node_module. J'ai essayé d'utiliser expose-loader afin de pouvoir l'importer. Dans mon webpack, j'ai la configuration de base suivante pour obtenir ce travail:Utilisation de expose-loader avec webpack 2 pour charger un module

const path = require('path'); 

module.exports = { 
    // ... 
    module: { 
    rules: [{ 
     test: /\.jwplayer\.js$/, 
     use: { 
     loader: 'expose-loader', 
     options: 'jwplayer', // have also tried `options: { name: 'jwplayer' }` 
     }, 
    }] 
    }, 
    resolve: { 
    alias: { 
     jwplayer: path.join(__dirname, './lib/jwplayer-7.7.4/jwplayer.js'), 
    } 
    }, 
    externals: { 
    window: 'Window', 
    } 
}; 

La chose étrange est, jwplayer est exposé sur l'objet window, mais il est disponible en tant que module.

import jwplayer from 'jwplayer'; 

console.log(jwplayer);   // Object {} (not jwplayer) 
console.log(window.jwplayer); // function jwplayer() {} 

Est-ce que je le charge incorrectement? Comment dois-je charger jwplayer avec webpack 2?

Répondre

1

Ce n'est pas comme ça que vous utilisez le chargeur d'exposition. Le chargeur d'exposition dit à webpack d'exposer quelque chose au contexte global lorsque le paquet est chargé. Ma compréhension est que vous voulez utiliser jwplayer dans le bundle lui-même.

Vous pouvez utiliser le script-loader, voilà comment j'importer habituellement des scripts (analyse, par exemple)

+0

si je l'inclure dans un paquet? – corvid

+0

Ouais vous pourriez mais vous avez toujours le même problème: être capable de préparer jwplayer. En tant qu'expérience personnelle, lorsque certains outils tiers ne sont pas compatibles avec les «commonjs», j'utilise le script-loader pour les importer. J'ai fait la même chose avec jQuery dans le passé parce que, pour une raison quelconque, Foundation me donnait mal à la tête. Script loader a tout réglé – Ematipico