如何从命令行向nodeJS / phantomJS应用程序传递非常大的参数

时间:2014-06-05 03:11:08

标签: node.js shell command-line phantomjs

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

这是我用来产生phatomJS过程的NodeJS代码:

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

此外,由于它每次都会产生一个不同的进程,因此很多页面很可能并行渲染。

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

1 个答案:

答案 0 :(得分:0)

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

从那里你可以page.open()使用类似file://<path-from-arg-list>的网址{/ 1}}:

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