我需要在将接受json的端口7788上创建Web api,然后将该json传递到将渲染网站的api,然后幻影js将在该页面上找到元素,并且端口7788上的web api应该返回该元素。一切正常,直到我尝试将响应发送到7788上的服务器的错误:
无法访问已删除QObject的成员“写”:
为此:firstResponse.write(imgsrc);
是否可以在调用page.open之后返回带有server.listen响应的元素?
var server = require('webserver').create();
var port = require('system').env.PORT || 7788;
server.listen(port, {'keepAlive': false}, function (request, response) {
console.log("request method: ", request.method); // request.method POST or GET
var imgsrc;
var firstResponse = response;
if (request.method == 'POST') {
var page = require('webpage').create();
var settings = {
operation: "POST",
encoding: "utf8",
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify(request.post)
};
var url = "http://127.0.0.1:5000/mapapp";
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.open(url, settings, function (status) {
setTimeout(function () {
page.evaluate(function () {
imgsrc = document.getElementById("exportedImg").src;
});
}, 5000);
});
page.close();
setTimeout(function () {
firstResponse.write(imgsrc);
}, 7000);
firstResponse.close();
}
});
最佳答案
您调用firstResponse.close(); before称为firstResponse.write(imgsrc);超时后。
将firstResponse.close()移至setTimeout处理程序:
page.close();
setTimeout(function () {
firstResponse.write(imgsrc);
firstResponse.close();
}, 7000);
关于javascript - PhantomJS错误:无法访问已删除QObject的成员“写入”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37997046/