node.js - 幻 Node 模块无法加载外部资源

标签 node.js phantomjs

我正在一个 nodejs 服务器上工作,它将发布的 html 呈现为 pdf、png 或 jpg。 ( https://github.com/svenhornberg/pagetox (server.js) 如果你想试试的话)

它工作得非常好,可以呈现复杂的网站,但仅限于我想要加载简单图像的那一点。例如,我正在向我的服务器发送以下代码:

<!doctype html>
<html>
<head>
  <title>logo</title>
</head>
<body>
  <img alt="logo" src="http://upload.wikimedia.org/wikipedia/commons/d/de/Wikipedia_Logo_1.0.png">
</body>
</html>

代码应该没问题。 但呈现的响应图像不包含 Logo 图像。 如 phantomjs 文档 ( http://phantomjs.org/api/webpage/property/settings.html ) 中所述,localToRemoteUrlAccessEnabled 设置为 false,因此将其设置为 true,如 phantom-node ( https://github.com/sgentle/phantomjs-node/ ) 文档中所述:

  page.set('settings.localToRemoteUrlAccessEnabled', true);
  page.set('settings.loadImages', true);

为了证明它被设置为 true,我调用了一个返回 true 的 getter

  page.get('settings.localToRemoteUrlAccessEnabled', function(data) { console.log(data);});

我在 Linux 上将 Node v0.10.26 与 phantomjs-node (0.6.1)、phantomjs(1.9.7) 一起使用

现在的问题是,有人看到错误了吗?或者可以给我提示我做错了什么。或者 phantomjs/phtanom-node 没有加载任何外部图像的任何其他可能性

我正在使用渲染方法生成 png、jpg 或 pdf 文件。我将评估函数中的方法作为回调调用,因此网站应该已完全加载。 (完整代码在 https://github.com/svenhornberg/pagetox/blob/master/server.js )

Edit1:我没有使用代理,这可能会阻止请求。

最佳答案

看来我需要设置超时并等待所有外部资源加载完毕。

page.set('content') dosen't work with dynamic content in phantomjs

我让它工作了,但超时不是我想要的。如果我找到任何更好的方法,我会发布它。

关于node.js - 幻 Node 模块无法加载外部资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23461116/

相关文章:

javascript - 模块之间共享的事件发射器

selenium-webdriver - 以编程方式获取 Web 请求发起者

javascript - 如何使用 phantomjs/casperjs 处理下载?

javascript - 使用 page.evaluate 传递参数

jquery - 在 Rails 中的 Cucumber + Capybara + PhantomJS 中调试 jQuery Ajax

javascript - 我的测试现在因 SyntaxError: Parse error (Capybara::Poltergeist::JavascriptError) 而失败

mysql - Node mysql 查询未从查询外部更新变量

javascript - 使用 Node/JavaScript 找出域名的初步猜测完全限定 URL

node.js - 在 WSL2 : Ubuntu 20. 04 for Windows 10 nodejs 中安装但 npm 不工作

javascript - 适用于 Node.js 的 Google 文档 API