AWS Lambda:Express res.render始终发送“内部服务器错误”

时间:2019-04-02 02:10:23

标签: node.js express aws-lambda pug

我的目标是将现有的Node-Express-Pug-Mongo网站移植到Amazon Web Services上,但是在Lambda上渲染Pug文件时遇到错误。每当我尝试运行res.render时,页面都会显示以下内容:{"message": "Internal server error"}在超时3000毫秒后(从查看CloudWatch控制台开始)。

我尝试将console.log扔到任何地方,以获取有关导致错误的原因的更多信息,但无济于事。

  • res.send处理文本
  • res.sendFile处理我要在函数中使用的Pug文件
  • res.render接受回调输入,我曾尝试使用它来捕获错误,但控制台上没有日志。
  • 我尝试了不同的输入哈巴狗文件的方法,如您所见,这是五个不同的get URL。他们都做同样的事情。
  • 我尝试过改用Jade,但是遇到了同样的问题。
  • 注意:在本地服务器上,render1和render3中的语法有效。
  • ALSO:在本地服务器上,使用回调确实会使函数挂起。我尝试过有无回调,但问题是相同的。
'use strict'
const path = require('path');
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const router = express.Router();

app.set('view engine', 'pug');

router.use(bodyParser.json());
router.use(bodyParser.urlencoded({ extended: true }));
app.set('views', path.join(__dirname, 'views'));

router.get('/sendfile', function(req, res){
    res.sendFile(__dirname+"/views/test.pug");
});

router.get('/sendtext', function(req, res){
    res.send('hello!');
});

router.get('/render1', function(req, res){
    res.render('test', {}, function(err){
        console.log(err);
    });
});
router.get('/render2', function(req, res){
    res.render('.test', {}, function(err){
        console.log(err);
    });
});
router.get('/render3', function(req, res){
    res.render('./test', {}, function(err){
        console.log(err);
    });
});
router.get('/render4', function(req, res){
    res.render('./views/test', {}, function(err){
        console.log(err);
    });
});
router.get('/render5', function(req, res){
    res.render(__dirname+'/views/test', {}, function(err){
        console.log(err);
    });
});
app.use('/', router);

// Export your express server so you can import it in the lambda function.
module.exports = app;

这些渲染功能都不起作用。它总是在3秒后超时并返回{"message": "Internal server error"}。我已经尽力想了一切。这是快递问题吗?配置Pug是否需要做其他事情?当我在本地Node.js服务器上使用完全相同的模块时,它可以按预期工作。

1 个答案:

答案 0 :(得分:1)

经过大量挖掘,我发现了问题所在。 我的Lambda函数(“服务器”)未分配足够的RAM。当我尝试加载Pug时,它将过载并崩溃。 默认值为128MB,因此将其提高到384MB即可正常工作。