[英]Why is Express isn't able to find ejs in netlify lambda serverless
[英]Express with ejs serverless host with AWS Lambda
我正在嘗試使用無服務器部署一個帶有 ejs 視圖引擎的快速應用程序作為 AWS Lambda function 我對無服務器框架真的很陌生,需要一些指導。
問題:部署成功,但我從 AWS 端點收到{"message": "Internal server error"}
這是我的 Express server.js
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
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
任何關於我的代碼/配置有什么問題或如何以正確方式做的指導都值得贊賞
確保您有正確的緩存選項來為您提供 static 捆綁包; 這是一個一般的例子:
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));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.