所以,我今天正在将代码从windows转换为linux,以确保一切正常。我设法打破了casper / phantom,我甚至不确定如何。
这是我在linux上运行casper脚本的命令(ubuntu 12.14):
/usr/bin/casperjs /var/www/tekalyze/phantom/get_site_info.js --jquery-path="/var/www/tekalyze/js/jquery-1.10.2.min.js" --uri-path=" /var/www/tekalyze/phantom/URI.js" --log-path="/var/www/tekalyze/phantom/casper.log" --data-url=http://tekalyze.com/ajax.php --id='19' --url='http://www.bk.com/?utm_source=LOCATIONiq&utm_medium=locallstgs&utm_campaign=2013' --log-level=debug
它给了我这个:
TypeError: 'undefined' is not an object (evaluating 'requireDirs.forEach')
in module (./get_all_urls:102)
/var/www/tekalyze/phantom/get_all_urls.js:102 in _require
/var/www/tekalyze/phantom:13 in anonymous
/home/casper/casperjs/bin/bootstrap.js:146 in _require
/var/www/tekalyze/phantom/get_site_info.js:8
/var/www/tekalyze/phantom/get_site_info.js:228
get_all_urls第102行是:
crawl.call(this, links[currentLink]);
我已经尝试过将其评论出来,并且堆栈跟踪保持不变,这让我相信它与此无关。
可以找到相关文件here。
老实说,我只是挠头。我查看了bootstrap.js:146并看到了一些关于phantom.casperPath的内容,但是我没有必要在windows中设置环境变量,所以我对linux不确定。 relevant line是这样的:if (!phantom.casperPath)
- 这让我相信如果我重新编写所有内容从幻像开始,然后设置所有的casper变量,我可以让它工作,但我没有我们已经验证了它是否可行。
另外,我使用this脚本来安装它们,因此应该正确设置目录。
答案 0 :(得分:2)
事实证明,在1.1.0-DEV之前不会添加此功能,因此更新到该功能而不是在Linux上使用1.0.0是最佳解决方案。