AWS Lambda:模块初始化错误:TypeError

我正在尝试部署AWS lambda函数,并使用express编写代码:

码:

var express = require('express'); var bodyParser = require('body-parser'); var lampress = require('lampress'); var request = require('request'); var app = express(); app.set('port', (process.env.PORT || 5000)); // Process application/x-www-form-urlencoded app.use(bodyParser.urlencoded({extended: false})); // Process application/json app.use(bodyParser.json()); // Index route app.get('/', function (req, res) { res.send('Hello! I am a Chatbot designed to help you learn Type "begin" to start a chat! You can type "begin" at any time to return to the first menu'); }); // for Facebook verification app.get('/webhook/', function (req, res) { if (req.query['hub.verify_token'] === 'xyz') { res.send(req.query['hub.challenge']); } res.send('Error, wrong token'); }); // Spin up the server app.listen(app.get('port'), function() { console.log('running on port', app.get('port')); }); //figure out if your greeting text is working //need persistent menu? app.post('/webhook/', function (req, res) { getStarted(); greetingText(); messaging_events = req.body.entry[0].messaging; for (i = 0; i < messaging_events.length; i++) { event = req.body.entry[0].messaging[i]; sender = event.sender.id; if (event.message && event.message.text) { //code } if (event.postback) { //code } console.log('********2'); } res.sendStatus(200) }); exports.handler = lampress(app, function() { console.log("Server has started"); }); 

错误:

  module initialization error: TypeError at lampress (/var/task/node_modules/lampress/index.js:82:10) at Object.<anonymous> (/var/task/index.js:829:23) at Module._compile (module.js:409:26) at Object.Module._extensions..js (module.js:416:10) at Module.load (module.js:343:32) at Function.Module._load (module.js:300:12) at Module.require (module.js:353:17) at require (internal/module.js:12:17)* 

我有适当的node_modules。 为什么不做这项工作。

压缩的zip结构 – > index.js – > node_modules文件夹。

package.json:“lampress”:“^ 1.1.1”

我认为你的问题是在exports.handler = lampress(...按照lampress文档 lampress()需要2个参数,第一个端口号和第二个服务器。你已经通过服务器的第一个参数和第二个函数,所以灯罩抛出一个TypeError

正确的代码是:

 exports.handler = lampress(<your port number>, app); 

根据你的模块来源,你可以尝试:

 require('./lampress'); 

另外,在你的路由处理器中,为了避免发送响应两次,

 app.get('/webhook/', function (req, res) { if (req.query['hub.verify_token'] === 'xyz') { return res.send(req.query['hub.challenge']); } res.send('Error, wrong token'); });