Javascript PhantomJS-page.evaluate不是一个函数

Javascript PhantomJS-page.evaluate不是一个函数,javascript,node.js,phantomjs,Javascript,Node.js,Phantomjs,我的代码是这样开始的。console.log“hello3”已打印,但随后它显示错误: TypeError:page.evaluate不是函数 在/home/someone/server123.js:58:11 在 在进程中。_tick回调(内部/process/next_tick.js:188:7) 为什么会出现这种情况 节点版本:v8.6.0 Npm版本:5.3.0 幻影版本:phantom@4.0.5您遇到的问题是page.open()不返回页面,而是返回状态。因此,传递给下一个then(

我的代码是这样开始的。console.log“hello3”已打印,但随后它显示错误:

TypeError:page.evaluate不是函数 在/home/someone/server123.js:58:11 在 在进程中。_tick回调(内部/process/next_tick.js:188:7)

为什么会出现这种情况

节点版本:v8.6.0

Npm版本:5.3.0


幻影版本:phantom@4.0.5

您遇到的问题是
page.open()
不返回页面,而是返回状态。因此,传递给下一个
then()
的值是状态,您尝试对其调用evaluate。当然,这是行不通的

他们处理这一问题的方式是在
then()
链外部有一个页面变量,他们可以在每个
then()
链内部访问该变量。你几乎是在用
\u page=page
如果在函数外部定义了
\u page
,则应该能够调用
\u page.evaluate()
,而不是在
open()
的返回值上调用它


您遇到的问题是,
page.open()
不返回页面,而是返回状态。因此,传递给下一个
then()
的值是状态,您尝试对其调用evaluate。当然,这是行不通的

他们处理这一问题的方式是在
then()
链外部有一个页面变量,他们可以在每个
then()
链内部访问该变量。你几乎是在用
\u page=page
如果在函数外部定义了
\u page
,则应该能够调用
\u page.evaluate()
,而不是在
open()
的返回值上调用它


是的,就是这样!谢谢你!我的问题解决了,但现在,在_page.evaluate(function(){我无法打印任何内容,似乎有任何错误…我试图抛出一个错误,但没有成功。知道为什么吗?是的,这有点棘手-您在
evaluate()中运行的代码
是在您正在评估的页面的上下文中运行的。这里有一个关于这个问题的好线索:@Mark_M
page.set('paperSize',{format'A4',orientation'rapital');
page.set
不是一个函数任何想法吗?是的,就是它!谢谢!我的问题已经解决了,但现在,在_page.evaluate(function()){我无法打印任何内容,似乎有任何错误……我试图抛出一个错误,但没有成功。知道为什么吗?是的,这有点棘手-您在
evaluate()
中运行的代码是在您正在评估的页面的上下文中运行的。这里有一个关于这个问题的好线索:@Mark\M
page.set('paperSize',{format:'A4',orientation:'Grait'});
page.set
不是一个函数吗?
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 () {
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 () {