var phantom = require('phantom');
phantom.create()
.then(function (ph) {
_ph = ph;
return ph.createPage();
})
.then(function(page) {
_page = page;
url = "http://www.aeiou.pt";
return page.open(url);
})
.then(function(page) {
console.log("hello3");
page.evaluate(function () {
我的代码以这样的东西开头。打印console.log“hello3”但是,它给了我错误:
TypeError:page.evaluate不是函数 在/home/someone/server123.js:58:11 在 at process._tickCallback(internal / process / next_tick.js:188:7)
为什么会出现这种情况?
节点版本:v8.6.0
Npm版本:5.3.0
幻影版:phantom@4.0.5
答案 0 :(得分:2)
您遇到的问题是page.open()
没有返回页面 - 它会返回状态。因此,传递给下一个then()
的值是状态,您尝试在其上调用evaluate。当然,这不起作用。
他们在example处理此问题的方式是在then()
链之外有一个页面变量,他们可以在每个then()
内访问。您几乎是在_page = page;
执行此操作如果在函数外定义了_page
,您应该能够调用_page.evaluate()
而不是从open()
返回值调用它。 / p>
var phantom = require('phantom');
var _page;
phantom.create()
.then(function (ph) {
_ph = ph;
return ph.createPage();
})
.then(function(page) {
_page = page;
url = "http://www.aeiou.pt";
return page.open(url);
})
.then(function(status) {
// check status for errors here
console.log("hello3");
_page.evaluate(function () {