node.js - Lambda 函数中的把手“找不到部分包含”
问题描述
我有一个要移植到 AWS Lambda 的快速应用程序。它使用车把作为中间件。我开始遵循本指南:https ://dev.to/brightdevs/how-to-convert-an-express-app-to-aws-lambda--44gc
这和我的代码之间的区别是把手。例如,当我尝试 GET / 时,我得到:
Error: /var/task/views/index.hbs: The partial include could not be found
at Object.invokePartial (/var/task/node_modules/handlebars/dist/cjs/handlebars/runtime.js:266:11)
at Object.invokePartialWrapper [as invokePartial] (/var/task/node_modules/handlebars/dist/cjs/handlebars/runtime.js:68:39)
at Object.eval [as main] (eval at createFunctionContext (/var/task/node_modules/handlebars/dist/cjs/handlebars/compiler/javascript-compiler.js:254:23), <anonymous>:8:28)
at main (/var/task/node_modules/handlebars/dist/cjs/handlebars/runtime.js:173:32)
at ret (/var/task/node_modules/handlebars/dist/cjs/handlebars/runtime.js:176:12)
at ret (/var/task/node_modules/handlebars/dist/cjs/handlebars/compiler/compiler.js:525:21)
at /var/task/node_modules/hbs/lib/hbs.js:63:19
at FSReqWrap.readFileAfterClose [as oncomplete] (fs.js:511:3)
我的文件夹结构如下所示:
/server.js
/views/index.hbs
/views/partials/include.hbs
server.js 的相关部分:
const express = require('express'),
hbs = require('hbs'),
app = express();
hbs.registerPartials(__dirname +'/views/partials');
app.set('view-engine', 'hbs');
app.get("/", (req, res) => {
res.render('index.hbs', {});
});
const PORT = process.env.PORT || 8080;
const isInLambda = !!process.env.LAMBDA_TASK_ROOT;
if (isInLambda) {
const serverlessExpress = require('aws-serverless-express');
const server = serverlessExpress.createServer(app);
exports.main = (event, context) => serverlessExpress.proxy(server, event, context)
} else {
app.listen(PORT, ()=>{
console.log('Server is up, listening on port ' + PORT);
});
}
如果我使用 node .\server.js 在本地运行代码,我希望 index.hbs 能够像它一样呈现。相反,我得到了上面粘贴的找不到错误。任何线索表示赞赏。
解决方案
我最终解决了它,但想发布解决方案,因为我花了很多时间处理这个问题并将问题放在一起。
做了什么:需要“express-handlebars”而不是“hbs”。我不知道为什么它不适用于 hbs,但我不想再花时间研究这个。
我希望这对将来的某人有用。
推荐阅读
- javascript - 如何在promise中返回body的值
- regex - RegExp 以大写字母开头并以小写字母结尾 or 是一个数字
- java - PMD Gradle 插件中的两层规则集
- powershell - 显示消息框的 Visual Studio Code 问题
- javascript - 如何在 javascript 中实现 Firebase 数据库中的承诺?
- excel - Excel公式提取随机值而不是重复值
- python-3.x - 功能上定义高 D 空间中的分离“优点”
- javascript - Ajax 重新加载后,onclick 功能不起作用
- python - 如何使用 Python 根据输入的星座打印报价?
- tweepy - 英文版 Twitter 高级搜索查询推文