当尝试使用不同的解析器时,Cb不是一个函数
cb is not a function when trying to use a different parser
我在一个桶中有s3服务器访问日志,我试图用lambda函数让它们到AWS上的ElasticSearch服务。
我正在使用的示例lambda函数,它使用clf-parser
粘贴apache通用日志文件。由于我想使用s3-log-parser,我做了以下更改:
// instead of
var parse = require('clf-parser');
// I have
var s3logparser = require('s3-log-parser');
// instead of
var logRecord = parse(line.toString());
// I have
var logRecord = s3LogParser.parse(line.toString());`
得到
ReferenceError: s3LogParser is not defined
我调用模块错误吗?我用var s3LogParser= require('s3-log-parser');
来修正这个错误现在我得到TypeError: cb is not a function
我注意到,在index.js s3解析器有这一行:cb(null, parsedLogs);
…试图找出如何解决这个回调问题…
看起来好像s3-log-parser
模块期望回调,并且没有从parse()
函数返回任何东西,即使该函数是100%同步的。因此,获得已解析日志的唯一方法是提供一个回调函数。
var logRecord = s3LogParser.parse(line.toString(), function (err, lines) {
logRecord = lines
})
console.log(logRecord)
编辑
使用s3-access-log-parser代替(示例):
var s3alp = require("s3-access-log-parser")
var bogusCharacters = new RegExp(String.fromCharCode(8204, 8203), 'g')
var logRecord = s3alp(line.toString().replace(bogusCharacters, ''))
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 从javascript创建一个列表
- 节点导出返回一个空对象
- 使用clickToggle并在单击另一个元素时关闭元素
- 我可以在json对象中添加一个函数吗
- 使用javascript将动态表从一个html页面打印到另一个html页
- 将jsp文件下拉列表中的选定项分配给一个java变量(比如String selection)
- 表追加而不附加最后一个元素
- 我如何找到一个句子中的所有空格并替换忽略它们
- D3在一个调用中绘制不同的SVG形状,没有可见性
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 使用类从一个标记中双击事件
- Javascript,访问一个主要对象模块模式中的每个对象
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 我应该如何从xml文件构建一个javascript页面
- Regex代码只允许一个空格
- 当尝试使用不同的解析器时,Cb不是一个函数