作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
如何从通过 nodeJS 中的 execfile
启动的进程将数据发送回 Node ?最好是 JSON 格式。
这就是我的代码现在的样子:
//index.js NodeJS
var execFile = require('child_process').execFile;
var express = require('express');
app.get('/', function(req, res) {
var lchecker = execFile('/usr/local/bin/casperjs', [myprogram, myargs]);
lchecker.stdout.on('data', function(data) {
var dataObject = JSON.parse(data); //This throws an error.
});
});
我正在调用的 casperjs 脚本返回类似 JSON 的字符串,如下所示:
console.log("[{href: targetLink.href, anchor: targetLink.anchor, isLive: 0, isFollowed: null}]");
这是我得到的错误
当我尝试解析类似 JSON 的字符串时,我收到一条错误消息:
19 Jun 16:46:43 - [nodemon] starting node index.js
undefined:1
[{href: targetLink.href, anchor: targetLink.anchor, isLive: 1, isFollow: 1}]
^
Unexpected token h
所以我的 JSON 无效,并且真诚地,我确信有更好的方法可以将数据从 casperjs 发送回 Node ,但我不知道该怎么做。
我一直在考虑在express中创建一条新路由,然后让casperjs访问该路由并通过GET传递信息,然后在node.js中操作该信息。这是实现这一目标的好方法吗?
最佳答案
尽管我收到了很好且可行的答案,但我最终还是将所有内容输出到 casperjs 中的标准输出,然后通过 JSON 数组将其发送回 PHP。
所以在 casperjs 中我写了类似这样的东西:
console.log(JSON.stringify(targetLink))
然后在 Node 中,我可以通过 JSON.parse
访问它并以我想要的任何方式操作数据。
编辑:
我经常遇到这种情况,所以或者你可以让 CasperJS POST
将信息发送到网络端点,它有时更干净,但如果你担心安全性,它会增加开销并且您需要确保只有授权的抓取器才能将数据发布到您的端点。
关于json - 如何从 casperjs 将数据发送回 Node ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17201421/
我是一名优秀的程序员,十分优秀!