Lambda函数中的“未找到部分包含”把手

时间:2019-04-21 16:32:24

标签: node.js express aws-lambda handlebars.js

我有一个快速应用程序,想要移植到AWS Lambda。它使用把手作为中间件。我开始遵循此指南:https://dev.to/brightdevs/how-to-convert-an-express-app-to-aws-lambda--44gc

此代码与我的代码之间的区别是把手。 例如,当我尝试获取/时,我得到:

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);
    });
}

如果我使用节点。\ server.js在本地运行代码,我希望index.hbs能够像渲染的那样呈现。相反,我收到了上面粘贴的找不到错误。 任何线索都值得赞赏。

1 个答案:

答案 0 :(得分:0)

我最终解决了这个问题,但是由于我花了很多时间来解决这个问题,所以想发布解决方案。

它做了什么: 需要“ express-handlebars”而不是“ hbs”。我不知道为什么它不能与hbs一起使用,但是我不想花更多的时间来研究它。

我希望这将来对某人有用。