2015-08-24 3 views
0

Я пытаюсь выполнить сценарий nodejs из CasperJS. Это должно быть возможно из библиотеки PhantomJS childprocess. Но, похоже, это не работает для меня. Он не дает никаких ошибок, но он также не выполняет сценарий узла. Потому что этот скрипт отправляет push-уведомление. Когда я запускаю скрипт непосредственно из команды, он работает нормально. Но не из моего сценария CasperJS.Запустить отдельный файл nodejs из PhantomJS/CasperJS

var childProc = require("child_process"); 

var casper = require('casper').create({ 
    viewportSize: {width: 800, height: 400} 
}); 
var utils = require("utils"); 

casper.start('http://www.google.com', function() { 
    this.echo('Home page opened'); 
    this.echo(this.getTitle()); 
    childProc.execFile('C:\\Google Drive\\nodejs\\push.js', [], null, function (err, stdout, stderr){}); 

    this.exit(); 
}); 

Кто-нибудь знает, что я делаю неправильно?

+0

@ ArtjomB.doesnt похоже на работу либо – Vivendi

ответ

0

У вас есть две проблемы:

  • Вы забыли добавить команду для выполнения
  • Вы выходе слишком рано, потому что execFile асинхронная функция.

Try:

casper.start('http://www.google.com', function() { 
    this.echo('Home page opened'); 
    this.echo(this.getTitle()); 
    childProc.execFile('C:\\Google Drive\\nodejs\\push.js', [], null, function (err, stdout, stderr){ 
     utils.dump(arguments); 
     casper.echo("Exiting..."): 
     casper.exit(); 
    }); 
}).run(function(){/* This prevents CasperJS from exiting */}); 
+0

я забыл добавить 'casperjs.run)' метод (в моем фрагменте кода, но у меня было это. Я пробовал ваш точный код, но он по-прежнему не выполняет мой скрипт. Я даже поместил 'fs.exists()', чтобы убедиться, что путь к 'push.js' верен. Бот скрипт, похоже, не выполняется. – Vivendi

+0

Вы пробовали простой скрипт узла, который только что-то печатает на консоли? –

Смежные вопросы