PhantomJS ne parvient pas à ouvrir le fichier local
Je suis en train d'ouvrir un local HTML-fichier avec PhantomJS (version 1.9.2):
var page = require('webpage').create(), fs = require('fs'),
address = "/Full/Path/To/test.html";
console.log('isFile? ' + fs.isFile(address));
console.log('isReadable? ' + fs.isReadable(address));
page.open(address, function(status){
console.log('status? ' + status);
console.log(page.content)
phantom.exit();
});
D'abord je vérifie si j'ai le droit chemin et si le fichier est lisible à l'aide de fs.isFile()
& fs.isReadable()
. Puis-je vérifier si phantomjs a réussi à ouvrir le fichier (avec status
). Indépendante du contenu du fichier, j'obtiens toujours:
isFile? true
isReadable? true
status? fail
<html><head></head><body></body></html>
Le fichier et le chemin d'accès semblent être d'accord – mais PhantomJS ne parvient pas à l'ouvrir!
Des suggestions?
- Pourquoi n'utilisez-vous pas la page.onLoadFinished rappel que j'ai dans cette réponse? stackoverflow.com/a/7549515/541404
- Aussi, quel système d'exploitation utilisez-vous? Vous souhaiterez peut-être utiliser
fs.separator
pour obtenir les fichiers système de séparateur. Par exemple, si vous êtes sous Windows, votre séparateur sera "\", mais si vous êtes dans un Unix\OS X variante, vous allez utiliser "/". - Il me manquait le troisième "/" sur "fichier:///". Il fait fantôme de me donner de la réussite que de l'état, mais <html><head></head><body></body></html> en tant que contenu. Bizarre.
Vous devez vous connecter pour publier un commentaire.
PhantomJS pouvez ouvrir les fichiers locaux sans aucun problème. L'url à suivre classic Url/Uri règles, surtout pour un fichier local.
/Full/Path/To/test.html
n'est pas valide pour PhantomJS. Est-ce un fichier local ou une ressource web?En fonction de la voie, juste essayer quelque chose comme:
ou si c'est hébergé sur un serveur web:
Un ajout à @Cybermaxs réponse: Si vous avez besoin de convertir un simple chemin d'accès relatif
test.html
à une URL propre, vous pouvez le faire par quelque chose comme ceci:Notez que vous ne pouvez pas utiliser un solution basée sur
file-url
parce qu'il est basé surpath
etprocess
, qui ne travaillent pas au sein de PhantomJS. Heureusement, lafs
module offre des fonctionnalités similaires.Comme des fantômes 2.1.1 (peut-être plus tôt) de la méthode décrite par OP fonctionne en fait comme l'a écrit.