34

PhantomJS (バージョン 1.9.2) でローカルの HTML ファイルを開こうとしています:

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();
});

最初に、正しいパスを取得したかどうか、およびfs.isFile()&を使用してファイルが読み取り可能かどうかを確認しますfs.isReadable()。次に、phantomjs がファイルを開くことに成功したかどうかを確認します (でstatus)。ファイルの実際の内容とは無関係に、私は常に取得します:

isFile? true
isReadable? true
status? fail
<html><head></head><body></body></html>

したがって、ファイルとパスは問題ないように見えますが、PhantomJS はファイルを開くことができません! 助言がありますか?

4

3 に答える 3

4

@Cyber​​maxs の回答への追加: 単純な相対パスtest.htmlを適切な URL に変換する必要がある場合は、次のようにして行うことができます。

var fs = require('fs');

function getFileUrl(str) {
  var pathName = fs.absolute(str).replace(/\\/g, '/');
  // Windows drive letter must be prefixed with a slash
  if (pathName[0] !== "/") {
    pathName = "/" + pathName;
  }
  return encodeURI("file://" + pathName);
};

var fileUrl = getFileUrl("test.html");

PhantomJS 内では機能しないおよびに基づいているため、 に基づくソリューションをfile-url使用できないことに注意してください。幸いなことに、このモジュールは同様の機能を提供します。pathprocessfs

于 2017-05-13T08:41:30.940 に答える