PhantomJS无法打开本地文件

PhantomJS无法打开本地文件,phantomjs,Phantomjs,我正在尝试使用PhantomJS(版本1.9.2)打开本地HTML文件: 首先,我使用fs.isFile()&fs.isReadable()检查路径是否正确,文件是否可读。然后我检查phantomjs是否成功地打开了文件(状态为状态为)。与我始终获得的文件的实际内容无关: isFile? true isReadable? true status? fail <html><head></head><body></body></htm

我正在尝试使用PhantomJS(版本1.9.2)打开本地HTML文件:

首先,我使用
fs.isFile()
&
fs.isReadable()
检查路径是否正确,文件是否可读。然后我检查phantomjs是否成功地打开了文件(状态为
状态为
)。与我始终获得的文件的实际内容无关:

isFile? true
isReadable? true
status? fail
<html><head></head><body></body></html>
isFile?真的
可阅读吗?真的
地位失败
因此,文件和路径似乎没有问题——但PhantomJS无法打开它!
有什么建议吗?

PhantomJS可以毫无问题地打开本地文件。url必须遵循经典的url/Uri规则,尤其是对于web应用程序

/Full/Path/To/test.html
对PhantomJS无效。它是本地文件还是web资源

根据路径的不同,只需尝试以下方法:

file:///C:/Full/Path/To/test.html
或者,如果它托管在web服务器中:

http://localhost/Full/Path/To/test.html

@Cybermaxs的补充回答:如果您需要将简单的相对路径
test.html
转换为正确的URL,您可以通过以下方式进行转换:

file:///C:/Full/Path/To/test.html
var fs=require('fs');
函数getFileUrl(str){
var pathName=fs.absolute(str).replace(/\\\/g,'/');
//Windows驱动器号必须以斜杠作为前缀
如果(路径名[0]!=“/”){
路径名=“/”+路径名;
}
返回encodeURI(“文件:/”+路径名);
};
var fileUrl=getFileUrl(“test.html”);

请注意,您不能使用,因为它基于
路径
进程
,这在PhantomJS中不起作用。幸运的是,该模块提供了类似的功能。

从phantom 2.1.1(可能更早)开始,OP所描述的方法实际上是书面的。

为什么不像我在这个答案中那样使用page.onLoadFinished回调?另外,您使用的是什么操作系统?您可能需要使用
fs.separator
来获取适当的文件系统分隔符。例如,如果您在Windows中,分隔符将是“\”,但如果您在Unix\OS X变体中,则将使用“/”。我在“file://”中缺少第三个“/”。它让幻影给了我成功的地位,但作为内容。奇怪。@MiguelAlejandroFuentesLopez:Unix路径不是中所述的完整统一资源标识符。