gpt4 book ai didi

javascript - 尝试使用不同的解析器时,cb 不是函数

转载 作者:行者123 更新时间:2023-12-02 14:01:47 25 4
gpt4 key购买 nike

我的存储桶中有 s3 服务器访问日志,我正在尝试使用 lambda 函数将它们访问 AWS 上的 ElasticSearch 服务。

The example lambda function我正在使用的,它使用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

我注意到在 s3 解析器的 index.js 中有这一行: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 ( example ):

var s3alp = require("s3-access-log-parser")
var bogusCharacters = new RegExp(String.fromCharCode(8204, 8203), 'g')
var logRecord = s3alp(line.toString().replace(bogusCharacters, ''))

关于javascript - 尝试使用不同的解析器时,cb 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40366547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com