Pourquoi le code phantomjs ne passe-t-il pas sur le tableau?

Après avoir exécuté ce code, il enregistre un nombre infini de fichiers avec le code source de la première page (" http://site1.com "), pourquoi il ne passe pas par d'autres liens et ne s'arrête pas?

var args = ["http://site1.com", "http://site2.com", "http://site3.com"]; var fs = require('fs'); var i = 0; function handle_page(file){ page.open(file,function(){ page.evaluate(function(){ fs.write(i + '.html', page.content, 'w'); }); setTimeout(next_page,100); }); } function next_page(){ var file = args.shift(); if(!file){ phantom.exit(0); } i++ handle_page(file); } next_page(); 

page.evaluate() est le contexte de la page en sandbox dans PhantomJS. Il n'a pas accès à aucune variable définie à l'extérieur. Vous ne pouvez donc pas faire référence à fs ou à la page intérieur de celui-ci et vous n'avez pas besoin, car page.content est disponible dans le contexte externe:

 page.open(file,function(){ fs.write(i + '.html', page.content, 'w'); setTimeout(next_page,100); }); 

Le code restant semble bien.