В настоящее время я изо всех сил пытаюсь получить приложение Angular Universal с SSR, работающим с AWS Lambda.
Я установил новое приложение Angular с
ng new my-angular-ssr-app
Я добавил Angular Universal в свой Angualrapp
ng add @nguniversal/express-engine --clientProject my-angular-ssr-app
Я проверил, что мое приложение работает с npm и сделал GET-запрос (http://localhost:4000/) с почтальоном
npm run build:ssr && npm run serve:ssr
. Я заархивировал следующие папки и файлы с помощьютребуемые зависимости (aws-serverless-express)
- dist
- node_modules
- lambda.js
Загрузил ZIP в только что созданную функцию AWS Lambda с триггером шлюза API AWS
Сделал GET-запрос к API AWSURL шлюза и полученный:
{
"message": "Internal server error"
}
Cloudwatch регистрирует следующее для GET-запроса:
2019-10-10T07:17:17.935Z undefined ERROR Uncaught Exception
{
"errorType": "TypeError",
"errorMessage": "Cannot read property 'use' of undefined",
"stack": [
"TypeError: Cannot read property 'use' of undefined",
" at Object.<anonymous> (/var/task/index.js:25:12)",
" at Module._compile (internal/modules/cjs/loader.js:778:30)",
" at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)",
" at Module.load (internal/modules/cjs/loader.js:653:32)",
" at tryModuleLoad (internal/modules/cjs/loader.js:593:12)",
" at Function.Module._load (internal/modules/cjs/loader.js:585:3)",
" at Module.require (internal/modules/cjs/loader.js:692:17)",
" at require (internal/modules/cjs/helpers.js:25:18)",
" at _tryRequire (/var/runtime/UserFunction.js:75:12)",
" at _loadUserApp (/var/runtime/UserFunction.js:95:12)"
]
}
2019-10-10T07:17:17.963Z undefined INFO Node Express server listening on http://localhost:4000
Мои функции Lambda выглядят так:
const awsServerlessExpress = require('aws-serverless-express');
const server = require('./dist/server');
const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware');
const binaryMimeTypes = [
'application/javascript',
'application/json',
'application/octet-stream',
'application/xml',
'application/x-font-ttf',
'image/jpeg',
'image/png',
'image/gif',
'text/comma-separated-values',
'text/css',
'text/html',
'text/javascript',
'text/plain',
'text/text',
'text/xml',
'image/x-icon',
'image/svg+xml'
];
server.app.use(awsServerlessExpressMiddleware.eventContext());
const serverProxy = awsServerlessExpress.createServer(server.app, null, binaryMimeTypes);
module.exports.handler = (event, context) => awsServerlessExpress.proxy(serverProxy, event, context);
Iявно сделал что-то не так, но я не уверен, что мне не хватает. Кто-то знает, что я должен изменить, чтобы это работало?