2017-03-23 6 views
5

मैं एक गतिशील हैंडलबार वेबपृष्ठ से एक पीडीएफ फ़ाइल उत्पन्न करने की कोशिश कर रहा हूं जो डेटाबेस से डेटा प्रदर्शित करेगा। एक बार जब मैं इसे अपनी स्थानीय मशीन पर काम करने के लिए मिलता हूं, तो मैं कोड को लोचदार बीनस्टॉक तक ले जाना चाहता हूं। कोड चलने लगता है जो शुरू में कॉल को उकसाता है, हालांकि, फ़ैंटोमोज़ को कॉल करने के लिए इसे पारित स्क्रिप्ट को नहीं लगाना प्रतीत होता है। बस पुष्टि करने के लिए, मैंने फ़ाइल की शुरुआत में एक console.log कथन जोड़ा और कभी प्रिंट आउट नहीं किया। स्क्रिप्ट फ़ाइल में अन्य प्रिंट स्टेटमेंट का उल्लेख नहीं करना है। कोड नीचे है:nant.js uing spawn से phantomjs कॉल स्क्रिप्ट निष्पादित नहीं प्रतीत होता है

code that performs the spawn: 
var childArgs = [ 
        //'--debug=true', 
        path.join(__dirname, '../phantom/capture.js'), 
        id, 
        filename 
       ]; 

      let child = spawn(phantomjs.path, childArgs, {detached: false}); 

      console.log('set up stderr.....'); 
      child.stderr.on('data', (data) => { 
       console.log('ps stderr: ${data}'); 
      }); 

      console.log('set up stdout.....'); 
      child.stdout.on('data', (data) => { 
       console.log('ps stdout: ${data}'); 
      }); 

      console.log('set up close.....'); 
      child.on('close', (code) => { 
       console.log('this is a test 2.....'); 
       console.log(code); 
       if (code !== 0){ 
        let error = new Error('An error occurred while creating the current report.'); 
        error.status = 500; 
        reject(error); 
       } 

       resolve(fname); 
       return; 
      }); 




capture.js: 
console.log('we are inside....'); 
let os = require('os'); 
var system = require('system'); 
console.log('we are inside.... 1'); 
var page = require('webpage').create(); 
let phantom = require('phantomjs-prebuilt'); 
console.log('we are inside....2'); 
var args = system.args; 
console.log('we are inside....3'); 

if (args.length === 1) { 
    phantom.exit(0); 
} else { 
    page.viewportSize = { width: 2000, height: 800 }; 
//page.paperSize = { format: 'Letter', orientation: 'landscape', margin: '1cm' }; 
page.paperSize = { width: '1280px', height: '800px', margin: '0px' }; 
page.settings.localToRemoteUrlAccessEnabled = true; 
page.settings.loadImages = true; 
page.settings.javascriptEnabled = true; 

let done = false; 
//"http://example.com/order/" + args[1] + '?token=' + args[2] 
page.open("http://example.com/order/" + args[1], function start(status) { 
    if (status === "success"){ 
     page.render(os.tmpdir() + '/' + args[2], { format: 'pdf' }); 
    } 

    done = true; 
}); 

var intervalId = setInterval(function(){ 
    if (done){ 
     phantom.exit(); 
    } 
}, 100); 
} 

मुझे समस्या हो सकती है जहां समस्या हो सकती है। Capture.js की पहली पंक्ति को कॉल नहीं लगता है। 1) मुझे क्या समस्या है? 2) मैं इसे कैसे ठीक कर सकता हूं?

उत्तर

0

समस्या यह हो सकती है कि सुरक्षा कारणों से डॉट्स के साथ पथ के साथ phantomJS कैप्चर.जेएस नहीं चला सका। उदाहरण के लिए, वर्तमान निर्देशिका से capture.js को चलाने का प्रयास करें।

संबंधित मुद्दे