не удается найти модуль ./dist/server при развертывании в AWS lambda - PullRequest
0 голосов
/ 21 октября 2019

У меня был простой безсерверный веб-сайт, работающий в AWS lambda с использованием узла serverless deploy, затем я добавил на сайт дополнительные материалы и обновил до последней версии без сервера, теперь, когда я развертываю сайт и посещаю URL-адрес, который я получаю:

{"message": "Internal server error"}

Когда я захожу на лямбда-консоль, я получаю:

{
  "errorType": "Runtime.ImportModuleError",
  "errorMessage": "Error: Cannot find module './dist/server'",
  "trace": [
    "Runtime.ImportModuleError: Error: Cannot find module './dist/server'",
    "    at _loadUserApp (/var/runtime/UserFunction.js:100:13)",
    "    at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)",
    "    at Object.<anonymous> (/var/runtime/index.js:45:30)",
    "    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 Function.Module.runMain (internal/modules/cjs/loader.js:831:12)",
    "    at startup (internal/bootstrap/node.js:283:19)"
  ]
}

Есть идеи, как это исправить?

Подробнее

На основе комментария @Amit Baranes, который ниже ссылается на этот пост SO здесь находится сайт Angular. Я не совсем понимаю, что мне нужно изменить имя обработчика, чтобы соответствовать структуре моего сайта. Я сам не упаковываю файлы в .zip, но запускаю команду serverless deploy через узел:

Вот сайт serverless.yml

# generated by @ng-toolkit/serverless
service: serverless-site

plugins:
  - serverless-apigw-binary

provider:
  name: aws
  runtime: nodejs10.x
  memorySize: 192
  timeout: 10
  stage: production
  region: us-east-1

package:
  exclude:
   - src/**
   - node_modules/**
   - firebug-lite/**
   - e2e/**
   - coverage/**
   - '!node_modules/aws-serverless-express/**'
   - '!node_modules/binary-case/**'
   - '!node_modules/type-is/**'
   - '!node_modules/media-typer/**'
   - '!node_modules/mime-types/**'
   - '!node_modules/mime-db/**'

custom:
  apigwBinary:
    types:
      - '*/*'

functions:
  api:
    handler: lambda.universal
    events:
      - http: ANY {proxy+}
      - http: ANY /

Вот мой файл проектаструктура (начиная с каталога src) для веб-сайта.

enter image description here enter image description here

Вот лямбда-функция веб-сайта, когда онаразвернуто:

enter image description here

Поскольку у функции не было server.js. Я попытался создать это, изменив server.ts и поместив его в папку безуспешно:

// generated by Paul
//import 'zone.js/dist/zone-node';
//import 'reflect-metadata';

var express =require('express');
var cors= require('cors');
var compression =require('compression');

var join=require('path').join;

export const app = express();

app.use(compression());
app.use(cors());

const DIST_FOLDER = join(process.cwd(), 'dist/serverless-site');

app.get('*.*', express.static(join(DIST_FOLDER), {
    maxAge: '1y'
}));

app.get('/*', (req, res) => {
    res.sendFile(join(DIST_FOLDER + '/index.html'));
});
...