Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lambda函数作为node.js模块_Node.js_Firebase_Lambda_Module - Fatal编程技术网

Lambda函数作为node.js模块

Lambda函数作为node.js模块,node.js,firebase,lambda,module,Node.js,Firebase,Lambda,Module,下面的想法是让下面运行的lambda函数有一个节点模块 Node.js服务器: var express = require('express'); var app = express(); var server = require('http').Server(app); //var socketIoServer = require('socket.io')(server); server.listen(2006, function () { console.log('Express

下面的想法是让下面运行的lambda函数有一个节点模块

Node.js服务器:

var express = require('express');
var app = express();

var server = require('http').Server(app);
//var socketIoServer = require('socket.io')(server);

server.listen(2006, function () {
    console.log('Express server listening on port ' + 2006);
});
require('./lambdaFunction/function').startLambdaFunction()
我作为node.js模块制作的lambda函数如下:

'use strict';
var MongoClient = require('mongodb').MongoClient;

let atlas_connection_uri;
let cachedDb = null;

let firebase = require('firebase');

exports.handler= function(event, context,callback)
{

    // var uri = process.env['MONGODB_ATLAS_CLUSTER_URI'];
    var uri = "mongodb://163.172.131.83:28018/harmanconnectedcar";
    context.callbackWaitsForEmptyEventLoop = false;
    firebase.initializeApp({
        serviceAccount: {},
        databaseURL: "https://harmanconnectedcar-180411.firebaseio.com/"
    });


    var eventDataRef = firebase.database().ref('testTable');
    eventDataRef.on('child_changed', function(child,prev) {
        console.log("*************inside fucntion**********************")
        // all records after the last continue to invoke this function

        var lastKey = Object.keys(child.val()).sort().reverse()[0];
        var eventDetectedData = child.val()[lastKey];
        console.log(eventDetectedData);



    });

};


module.exports = {startLambdaFunction: exports.handler};
导出的模块为invoke,但我得到的错误为:

TypeError: Cannot set property 'callbackWaitsForEmptyEventLoop' of undefined
我这样做的原因是lambda函数在30秒后退出。我想无限期地运行该函数。我只是在尝试这样做

通过创建node.js服务器并作为模块调用lambda函数


尽管如此,请提供一些输入和想法来完成我可能完全错了。尽管如此,请提供一些输入,您在调用lambda函数时没有参数。当您在这一行中调用它时:

require('./lambdaFunction/function').startLambdaFunction()
您需要向它传递一些参数,这些参数看起来就像它在lambda上实际运行时得到的参数

require('./lambdaFunction/function').startLambdaFunction(event, context, callback)

您正在调用没有参数的lambda函数。当您在这一行中调用它时:

require('./lambdaFunction/function').startLambdaFunction()
您需要向它传递一些参数,这些参数看起来就像它在lambda上实际运行时得到的参数

require('./lambdaFunction/function').startLambdaFunction(event, context, callback)

我真的不明白你想完成什么,但这里有问题

您正在导出需要三个参数的函数:

exports.handler= function(event, context, callback)
但是。。当您尝试将函数的属性
callbackhaitsforemptyeventloop
设置为
false
时,调用该函数时没有参数,导致上下文未定义

context.callbackWaitsForEmptyEventLoop = false;
当需要
/lambdaFunction/function

require('./lambdaFunction/function').startLambdaFunction() /*Pass three arguments here*/

…或者您可以导出没有参数的函数,并在本地初始化它们。

我无法真正理解您试图实现的目标,但这里有问题

您正在导出需要三个参数的函数:

exports.handler= function(event, context, callback)
但是。。当您尝试将函数的属性
callbackhaitsforemptyeventloop
设置为
false
时,调用该函数时没有参数,导致上下文未定义

context.callbackWaitsForEmptyEventLoop = false;
当需要
/lambdaFunction/function

require('./lambdaFunction/function').startLambdaFunction() /*Pass three arguments here*/
..或者您可以导出不带参数的函数并在本地初始化它们