My goal is to port my existing Node-Express-Pug-Mongo website onto Amazon Web Services, but I'm running into an error with rendering Pug files on Lambda. Whenever I attempt to run res.render
, the page shows this: {"message": "Internal server error"}
after a timeout of 3000 milliseconds (from viewing the CloudWatch console).
I've tried throwing console.log
everywhere to get more information on what is causing the error, but to no avail.
res.send
works with textres.sendFile
works with the Pug file that I am trying to use in the functionres.render
accepts a callback input, which I have attempted to use to catch errors, but no logs exist on the console.get
URLs. All of them do the same thing.'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;
None of these render functions work. It always times out after 3 seconds and returns {"message": "Internal server error"}
. I've tried everything I could think of. Is this an Express issue? Do I have to do something different to configure Pug? It works exactly as expected when I use the exact same module on a local Node.js server.
After a lot of digging, I figured out the issue. My Lambda function ("server") wasn't allocated enough RAM. When I attempted to load Pug, it would overload and crash. The default is 128MB, so turning it up to 384MB-ish worked fine.