Универсальный угловой с AWS Lambda - TypeError - PullRequest
1 голос
/ 10 октября 2019

В настоящее время я изо всех сил пытаюсь получить приложение 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явно сделал что-то не так, но я не уверен, что мне не хватает. Кто-то знает, что я должен изменить, чтобы это работало?

...