1

所以,我今天将代码从 windows 转换到 linux 以确保一切正常。我设法打破了 casper/phantom,我什至不知道如何。

这是我在 linux (ubuntu 12.14) 上运行 casper 脚本的命令:

/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]);

我试过评论它,堆栈跟踪保持不变,这让我相信它不相关。

相关文件可以在这里找到。

老实说,我只是在挠头。我查看了 bootstrap.js:146 并看到了一些关于 phantom.casperPath 的内容,但我不必在 windows 中设置环境变量,所以我不确定这是否适用于 linux。相关的是这样的:if (!phantom.casperPath)- 这让我相信如果我重新编写所有内容以首先从幻像开始,然后设置所有 casper 变量,我可以让它工作,但我还没有验证这是否会工作呢。

另外,我使用这个脚本来安装它们,所以应该正确设置目录。

4

1 回答 1

2

事实证明,直到 1.1.0-DEV 才添加此功能,因此更新到该功能而不是在 linux 上使用 1.0.0 是最好的解决方案。

于 2013-08-01T12:30:14.337 回答