Рули "Частичное включение не найдено" внутри лямбда-функции - PullRequest
0 голосов
/ 21 апреля 2019

У меня есть экспресс-приложение, которое я хочу портировать на 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);
    });
}

Я ожидаю, что index.hbs будет отображаться так же, как если бы я запускал код локально с помощью узла. \ Server.js.Вместо этого я получил не найденную ошибку, которую вставил выше.Любые подсказки приветствуются.

1 Ответ

0 голосов
/ 21 апреля 2019

В итоге я решил ее, но хотел опубликовать резолюцию, так как потратил много времени на решение этой проблемы и составление вопроса.

Что это сделал: Требуя «экспресс-руль» вместо «hbs». Я не знаю, почему он не работает с hbs, но я не хочу больше тратить время на изучение этого вопроса.

Надеюсь, это может пригодиться кому-то в будущем.

...