【问题标题】:How to pass very large argument to a nodeJS/phantomJS app from the command line如何从命令行将非常大的参数传递给 nodeJS/phantomJS 应用程序
【发布时间】:2014-06-05 03:11:08
【问题描述】:

我有一个在后台运行的节点应用程序,它需要将 HTML 字符串也传递给 PhantomJS 应用程序来创建它的渲染。这工作正常,但在某些情况下 HTML 太长,我收到:Argument List too Long 错误消息。

这是我用来生成 phatomJS 进程的 NodeJS 代码:

var phantom = spawn('./phantom/phantomjs', ['./renderer.js', html, { detached: false });

此外,由于它每次都生成不同的进程,因此很可能许多页面都在并行渲染。

关于如何克服这个问题的任何想法?

【问题讨论】:

  • 传递文件路径而不是文件本身,尝试使用file:// 协议或仅提供来自localhost 的页面。
  • @elmigranto 我已经用代码示例更新了这个问题。您可以在答案中发布您将如何处理吗?谢谢

标签: node.js shell command-line phantomjs


【解决方案1】:

我猜你正在从节点生成 Phantom。不要将实际的 HTML 标记传递给命令行,而是将其保存到临时文件并传递该文件的路径。 (您可以使用some packages 为节点提供临时文件api。)

从那里您可以只使用page.open() 带有像file://<path-from-arg-list> 这样的url 的路径:

// renderer.js
var page = require('webpage').create();
var url = 'file://' + require('system').args[1];
page.open(url, function () {
  // …
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-13
    • 2010-09-30
    • 1970-01-01
    • 2020-01-01
    • 2020-12-13
    • 2010-10-04
    • 2021-05-21
    相关资源
    最近更新 更多