У меня был простой безсерверный веб-сайт, работающий в 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) для веб-сайта.
Вот лямбда-функция веб-сайта, когда онаразвернуто:
Поскольку у функции не было 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'));
});