【发布时间】:2021-05-18 17:12:09
【问题描述】:
我正在关注this 部署到 lambda 函数的教程。当我使用无服务器离线运行它时,它会为每个编译的 js 显示 404 错误,但在部署时它会显示 403 错误。我检查了我的 s3 存储桶,压缩文件夹包含 dist/ 所需的所有内容
live link
我试图通过在构建时包含--base-href=/dev 来更改基本href。当我作为 SSR 应用程序构建和运行时,一切都正常输出。
这是我的 serverless.yml:
service: anime-trending
plugins:
- serverless-apigw-binary
- serverless-offline
provider:
name: aws
runtime: nodejs12.x
memorySize: 192
timeout: 10
package:
exclude:
- ./**
include:
- "node_modules/aws-serverless-express/**"
- "node_modules/@vendia/**"
- "node_modules/binary-case/**"
- "node_modules/type-is/**"
- "node_modules/media-typer/**"
- "node_modules/mime-types/**"
- "node_modules/mime-db/**"
- "dist/**"
- "lambda.js"
custom:
apigwBinary:
types:
- "*/*"
functions:
api:
handler: lambda.handler
events:
- http: GET /
我的 tsconfig.serverless.json:
{
"extends": "./tsconfig.app.json",
"compilerOptions": {
"outDir": "./out-tsc/serverless",
"target": "es2016",
"types": [
"node"
]
},
"files": [
"src/main.server.ts",
"serverless.ts"
],
"angularCompilerOptions": {
"entryModule": "./src/app/app.server.module#AppServerModule"
}
}
我的 serverless.ts:
import 'zone.js/dist/zone-node';
import { ngExpressEngine } from '@nguniversal/express-engine';
import * as express from 'express';
import { join } from 'path';
import { AppServerModule } from './src/main.server';
import { APP_BASE_HREF } from '@angular/common';
import { existsSync } from 'fs';
export const app = express();
const distFolder = join(process.cwd(), 'dist/anime-trending/browser');
const indexHtml = existsSync(join(distFolder, 'index.original.html')) ? 'index.original.html' : 'index';
// Our Universal express-engine (found @ https://github.com/angular/universal/tree/master/modules/express-engine)
app.engine('html', ngExpressEngine({
bootstrap: AppServerModule,
}));
app.set('view engine', 'html');
app.set('views', distFolder);
// Example Express Rest API endpoints
// app.get('/api/**', (req, res) => { });
// Serve static files from /browser
app.get('*.*', express.static(distFolder, {
maxAge: '1y'
}));
// All regular routes use the Universal engine
app.get('*', (req, res) => {
res.render(indexHtml, { req, providers: [{ provide: APP_BASE_HREF, useValue: req.baseUrl }] });
});
export * from './src/main.server';
我的地区: [![在此处输入图片描述][1]] [1]:https://i.stack.imgur.com/S8NcS.png
我的 main.server/ts:
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
if (environment.production) {
enableProdMode();
}
export { AppServerModule } from './app/app.server.module';
export { renderModule, renderModuleFactory } from '@angular/platform-server';
【问题讨论】:
标签: angular amazon-web-services express aws-lambda serverless