首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过采用AWS Lambda的ejs无服务器主机实现Express

通过采用AWS Lambda的ejs无服务器主机实现Express
EN

Stack Overflow用户
提问于 2020-07-02 11:21:55
回答 1查看 607关注 0票数 0

我正在尝试使用serverless部署一个带有ejs视图引擎的express应用程序作为AWS Lambda函数,我对无服务器框架非常陌生,需要一些指导。

问题:部署成功,但我从亚马逊网络服务端点获取{"message": "Internal server error"}

这是我的Express server.js

代码语言:javascript
复制
const serverless = require('serverless-http');
const Dotenv = require('dotenv').config();
const express = require('express');
const bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static('public'));
app.set('view engine', 'ejs');

app.get('/', function (req, res) {
  res.render('index',{data: {name: user}, error: null});
}

module.exports.handler = serverless(app);

serverless.yml

代码语言:javascript
复制
org: dk013
app: wforecast
service: wforecast
provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: us-east-1
functions:
  app:
    handler: app.handler
    events: 
      - http: ANY /
      - http: 'ANY {proxy+}'
plugins:
  - serverless-offline

任何关于我的代码/配置出了什么问题或者如何以正确的方式去做的指南,我将不胜感激

EN

回答 1

Stack Overflow用户

发布于 2021-10-29 03:30:32

确保您有正确的缓存选项来为您的静态包提供服务;以下是一个通用示例:

代码语言:javascript
复制
const cacheOptions = {
    etag: true,
    lastModified: true,
    setHeaders: (res, path) => {
      const hashRegExp = new RegExp('\\.[0-9a-zA-z]{8}\\.');
      if (path.endsWith('.html')) {
        res.setHeader('Cache-Control', 'private, no-cache, no-store, must-revalidate');
      } else if (hashRegExp.test(path)) {
        res.setHeader('Cache-Control', 'max-age=31536000');
      }
    }
  }
app.use(express.static(path.join(__dirname, './build'), cacheOptions));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62688449

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档