2017-05-18 5 views
0

I Alptraum mit npm installiert Alptraum --save in meinem Meteor Projekt installieren. ich dann versucht, den Alptraum Beispielcode innerhalb eines Templates Hilfsmethode auszuführen:Albtraum mit Meteor löst eine Ausnahme

Template.nighmare.events({ 
    "click #doSomething"() { 

    let Nightmare = require('nightmare'); 
    let nightmare = Nightmare({ show: true }); 

    nightmare 
     .goto('https://duckduckgo.com') 
     .type('#search_form_input_homepage', 'github nightmare') 
     .click('#search_button_homepage') 
     .wait('#zero_click_wrapper .c-info__title a') 
     .evaluate(function() { 
     return document.querySelector('#zero_click_wrapper .c-info__title a').href; 
     }) 
     .end() 
     .then(function (result) { 
     console.log(result); 
     }) 
     .catch(function (error) { 
     console.error('Search failed:', error); 
      }); 
    } 
}) 

Wenn dieser Code aus aufgerufen wird (I auf einen Button klicken) I die Ausnahme erhalten:

Uncaught TypeError: fs.existsSync is not a function 
    at meteorInstall.node_modules.electron.index.js (modules.js?hash=1ae810a…:109967) 
    at fileEvaluate (modules-runtime.js?hash=0969a31…:207) 
    at require (modules-runtime.js?hash=0969a31…:130) 
    at meteorInstall.node_modules.nightmare.lib.nightmare.js (modules.js?hash=1ae810a…:107767) 
    at fileEvaluate (modules-runtime.js?hash=0969a31…:207) 
    at require (modules-runtime.js?hash=0969a31…:130) 
    at Object.click #doSomething (app.js:4330) 
    at blaze.js?hash=813922c…:3774 
    at Function.Template._withTemplateInstanceFunc (blaze.js?hash=813922c…:3743) 
    at Blaze.View.<anonymous> (blaze.js?hash=813922c…:3773) 

Ich habe keine Idee, wie das zu beheben ist, jeder Tipp oder Tipp wäre willkommen!

Wer hat Meteor + Alptraum zusammenarbeiten?

Wenn ich den gleichen Code in einer test.js Datei setzen und es mit Knoten test.js in seinem eigenen Projekt laufen funktioniert gut.

Antwort

0

Nightmare sollte auf Knoten, die nicht direkt in einem Browser ausgeführt werden.

Ihr Code innerhalb Template.template_name.events führt im Browser des Clients, damit Ihre Fehlermeldungen.

könnten Sie wahrscheinlich versuchen zu erreichen, was Sie, indem Sie Ihren Albtraum-Code in eine Server-only-Methode zu tun versuchen, und rufen Sie diese Methode in Ihren Event-Handler.

Verwandte Themen