page.evaluate - 如何在其中写入文件?

Eld*_*rov 3 javascript phantomjs

如何在page.evaluate中写入结果?将结果放入console.log但使用ts引发错误写入文件时,此代码可正常工作.

page.evaluate(function(url) {
        function getHTTPResponseString(url, callback) {
            try {
                var xhr = new XMLHttpRequest();
                xhr.onload = function() {
                    if (this.status == 200) {
                        var u8 = new Uint8Array(this.response), bs = [];
                        for (var i = u8.length - 1; i >= 0; --i) {
                            bs[i] = String.fromCharCode(u8[i]);
                        }
                        callback(bs.join(''));
                    } else {
                        console.log(this.statusText);
                        callback('');
                    }
                }
                xhr.open('GET', url, true);
                xhr.responseType = 'arraybuffer';
                xhr.send();
            } catch (e) {
                console.log(JSON.stringify(e));
            }
        }
        getHTTPResponseString(url, function(result) {
            console.log(result);
        })
    }, url);
Run Code Online (Sandbox Code Playgroud)

Eld*_*rov 5

我发现通过调用window.callphantom()内部page.evaluate和下一个句柄传递数据可以传递数据page.onCallback:

page.onCallback = function(result) {
    var fs = require('fs');
    fs.write('file.out', result, 'w');
};


getHTTPResponseString(url, function(result) {
     console.log(result);
     window.callPhantom(result);
})
Run Code Online (Sandbox Code Playgroud)