Лямбда-функция работает в консоли AWS, но не в Cloud9 - PullRequest
1 голос
/ 15 апреля 2019

Я делаю навык Alexa и мне нужно включить модуль rest для nodejs, чтобы я перешел с консоли AWS на облачную 9. В консоли все работает нормально, но когда я создаю проект с точно такой же настройкой (Не включая новый модуль) Я получаю следующую синтаксическую ошибку:

{
    "errorMessage": "Unexpected token )",
    "errorType": "SyntaxError",
    "stackTrace": [
        "    ^",
        "SyntaxError: Unexpected token )",
        "createScript (vm.js:56:10)",
        "Object.runInThisContext (vm.js:97:10)",
        "Module._compile (module.js:542:28)",
        "Object.Module._extensions..js (module.js:579:10)",
        "Module.load (module.js:487:32)",
        "tryModuleLoad (module.js:446:12)",
        "Function.Module._load (module.js:438:3)",
        "Module.require (module.js:497:17)",
        "require (internal/module.js:20:19)"
    ]
}

Это не говорит мне, в какой строке происходит синтаксическая ошибка, и в консоли с точно таким же входом она работает нормально.

Я уже пытался сократить мой код, чтобы включить в свой index.js только launchRequestHandler как таковой:

const LaunchRequestHandler = {
    canHandle(handlerInput) {
        return handlerInput.requestEnvelope.request.type === 'LaunchRequest';
    },
    handle(handlerInput) {
        var reprompt = '';
        const speakOutput = 'Start';
        return handlerInput.responseBuilder
            .speak(speakOutput)
            .reprompt(reprompt)
            .withShouldEndSession(false)
            .getResponse();
    },
};
const skillBuilder = Alexa.SkillBuilders.custom();

exports.handler = skillBuilder
    .addRequestHandlers(
        LaunchRequestHandler,
    )
    .addErrorHandlers(ErrorHandler)
    .lambda();

Я также попытался изменить package.json на тот, который был в консоли, и создал его новым с помощью npm init, но ни один из них не имеет значения. Что я делаю неправильно? Чего-то не хватает?

Мой template.yml выглядит так:

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: An AWS Serverless Specification template describing your function.
Resources:
  protocollFunction:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: protocollFunction/index.handler
      Runtime: nodejs6.10
      Description: ''
      MemorySize: 128
      Timeout: 15
      Events:
        LambdaMicroservice:
          Type: Api
          Properties:
            Path: /
            Method: ANY
  protocollFunctionPermission:
    Type: 'AWS::Lambda::Permission'
    Properties:
      Action: 'lambda:InvokeFunction'
      FunctionName:
        'Fn::GetAtt':
          - protocollFunction
          - Arn
      Principal: apigateway.amazonaws.com
      SourceArn:
        'Fn::Sub': 'arn:aws:execute-api:${AWS::Region}:${AWS::AccountId}:*/*/*/*'

1 Ответ

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

Я обнаружил ошибку, по-видимому, компилятор cloud9 более чувствителен, чем консоль AWS. , за LaunchRequestHandler в файле export.handler интерпретировалось как ошибка. После удаления это работает. Надеюсь, что это поможет другим, кто сталкивается с такой проблемой.

...