用Node.js编程运行JavaScript



我需要用Node.js以编程方式(在Java中)运行JavaScript并读取错误。有两种方法:

  1. 呼叫node -e <javascript>
  2. 将JavaScript保存到临时文件中,并调用node temp.js

它们有什么不同?

第一种方法似乎更有效,但当我运行类似的程序时

process.on('uncaughtException', function(err) {
    console.error(typeof(err));
});
function x_5(x_6, x_7) {
  var x_8 = Infinity;
}
throw x_5;

它打印

[eval]:8
throw x_5;
      ^
function

但我想要的只是最后一句话。第二种方法只给了我最后一句话。因此,我试图了解这两种方法的不同之处,以及如何消除不必要的错误信息。

如您所见,node -e script将异常转储到stderr,因此您可以将结果打印到stdout。

console.log而不是console.error

process.on('uncaughtException', function(err) {
    console.log(typeof(err));
});

在java端,从stdout获取结果,忽略stderr

String[] command = {"node", "-e", js};
Process p = Runtime.getRuntime().exec(command);
InputStream in = p.getInputStream();
for (int i = 0; i < in.available(); i++) {
    System.out.println("" + in.read());
}

最新更新