2017-10-04 3 views
0

Je construis un paquet npm à usage interne. L'une de ses fonctions est l'analyse DOM, je dois donc le charger dans un navigateur. Je voudrais utiliser un marionnettiste pour tester.Chargement et utilisation d'un module JS dans un marionnettiste

Dans les docs, j'ai trouvé page.injectFile() à utiliser pour les fichiers JS locaux. Cependant, mon fichier est un module (le fichier que j'injecte est déjà transpilé au JavaScript normal) et je ne sais pas quoi faire après l'avoir injecté dans la page du navigateur d'un marionnettiste.

Mon code à ce jour:

const puppeteer = require('puppeteer'); 

(async() => { 
    const browser = await puppeteer.launch(); 
    const page = await browser.newPage(); 
    page.injectFile('../build/MyModule') 
    .then(result => console.log(result)) 
    .then(error => console.log(error)); 
})(); 

je reçois un error, ReferenceError: require is not defined parce que je utilise besoin dans MyModule. Puis-je même utiliser des modules JS comme celui-ci dans un marionnettiste et si oui, quel est le moyen le plus rapide d'obtenir une instance de MyModule et de l'utiliser?

Répondre

1

Je doute vraiment marionnettiste peut y parvenir car il est juste un pilote nodejs pour le chrome sans tête.

Si vous devez utiliser le module personnalisé avec cmd require(...) à l'intérieur, vous auriez probablement besoin d'utiliser le module Bundler comme webpack pour générer un fichier de paquet avec toutes les dépendances, puis inject en page marionnettiste.

Juste mes 2 cents.

+0

Ça me semble bien d'injecter un fichier groupé. Merci. – dnmh