Моя цель - перенести мой существующий веб-сайт Node-Express-Pug-Mongo на Amazon Web Services, но у меня возникает ошибка при рендеринге файлов Pug на Lambda. Всякий раз, когда я пытаюсь запустить res.render
, на странице отображается следующее: {"message": "Internal server error"}
после тайм-аута 3000 миллисекунд (из просмотра консоли CloudWatch).
Я пытался выбросить console.log
везде, чтобы получить больше информации о причинах ошибки, но безрезультатно.
res.send
работает с текстом
res.sendFile
работает с файлом Pug, который я пытаюсь использовать в функции
res.render
принимает входные данные обратного вызова, которые я пытался использовать для отлова ошибок, но на консоли нет журналов.
- Я пробовал разные способы ввода файла мопса, как вы можете видеть для пяти разных
get
URL. Все они делают то же самое.
- Я пытался перейти на Jade, но у меня те же проблемы.
- ПРИМЕЧАНИЕ. На локальном сервере работают синтаксисы render1 и render3.
- ТАКЖЕ: Использование локальных обратных вызовов на локальном сервере приводит к зависанию функции. Я попытался сделать это с обратным вызовом и без него, и проблема та же.
'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.