automatisch ab Dies ist ein bisschen doozy. Dieses Problem ist höchstwahrscheinlich serverbezogen und meine erste Reaktion war AskUbuntu over here.Node's spawn() stürzt beim Aufruf aus einem forever Skript beim Booten ab
Ich versuche crontab oder rc.local oder init.d zu starten, um ein forever Skript beim Booten zu starten. Es hängt einen Server an einen Port an, den ich mit einigen Informationen anpingen kann, und lässt einen kopflosen Browser für mich laufen.
Das heißt, scheint es, dass ich nicht in der Lage, eine Antwort von Node.js des spawn()
zu bekommen: den Benutzer
var CASPER_PATH = '/home/ubuntu/dev/casperjs/bin/casperjs'; // actual binary location, not a symlink
var SCRIPTS_PATH = '/home/custom_user/endpoints/server.js';
var fileName = req.body.source + '_' + req.body.type + '.coffee'; // looks like: mysource_my_scrape_type.coffee
var scrapeId = 'test_scrape';
var user = 'user123';
var pass = 'pass123';
if (fs.existsSync(SCRIPTS_PATH + fileName)) {
// If file is in place, spawn casperjs
var sP = spawn(CASPER_PATH,
[SCRIPTS_PATH + fileName, '--ssl-protocol=any', '--user='+user, '--scrapeId='+scrapeId, '--pass='+pass],
{ detached: true },
function (err, stdout, stderr) {});
sP.stdout.on('data', function(data) { console.log('stdout', data.toString('utf8')); });
sP.stderr.on('data', function(data) { console.log('stderr', data.toString('utf8')); });
sP.stdout.on('close', function(code) { console.log('close', code); });
res.send({ scheduled: true, key: scrapeId });
} else {
res.send({ scheduled: false, error: 'Incorrect source, type or the script is missing.' });
}
Bevor ich hinzugefügt, um die PHANTOMJS_EXECUTABLE
env crontab
oder rc.local
(tut, egal Rolle zu spielen Level), stdout war nützlich:
stdout Fatal: [Errno 2] Keine solche Datei oder Verzeichnis; hast du installiert phantomjs?
schließen falsch
Nun, da die Umwelt var ist, gibt es keinen Ausgang nach spawn()
überhaupt.
Wohlgemerkt, Casper startet ganz gut, wenn ein Benutzer (beliebiger Berechtigungsstufe) node/forever von bash aus startet.
Wie kann ich sehen, warum spawn()
fehlschlägt?
Können Sie die vollständige Quelle Ihres Skripts hinzufügen? Was genau ist "Spawn"? Ich habe gerade [docs] (https://nodejs.org/api/child_process.html#child_process_child_process_spawn_command_args_options) angesehen und es gibt keinen Fehler-Callback zu child_process.spawn(), wenn du diesen 'spawn' verwendest und dann versuchst, sP hinzuzufügen. on ('Fehler', ..) Handler und überprüfen Sie die Ausgabe. Es wäre auch gut, wenn Sie Ihre crontab oder init.d posten, so dass es einfacher wäre, Ihr Problem zu reproduzieren. –