Node.js Lambda函数在AWS控制台中工作,但在Cloud9上不工作
我正在学习Alexa技能,需要包括nodejs的rest模块,所以我已经从AWS控制台改为cloud 9。在控制台中,一切正常,但当我使用完全相同的设置(不包括新模块)创建项目时,会出现以下语法错误:Node.js Lambda函数在AWS控制台中工作,但在Cloud9上不工作,node.js,amazon-web-services,aws-lambda,alexa,aws-cloud9,Node.js,Amazon Web Services,Aws Lambda,Alexa,Aws Cloud9,我正在学习Alexa技能,需要包括nodejs的rest模块,所以我已经从AWS控制台改为cloud 9。在控制台中,一切正常,但当我使用完全相同的设置(不包括新模块)创建项目时,会出现以下语法错误: { "errorMessage": "Unexpected token )", "errorType": "SyntaxError", "stackTrace": [ " ^", "SyntaxError: Unexpected tok
{
"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更改为控制台中的package.json,并使用npm init创建了新的package.json,但两者都没有区别。
我做错了什么?有什么东西不见了吗
My 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}:*/*/*/*'
我发现了错误,显然,cloud9编译器比AWS控制台更敏感。exports.handler中LaunchRequestHandler后面的
,
被解释为错误。删除此选项后,它将正常工作。希望这能帮助其他遇到类似问题的人。我发现了错误,显然,cloud9编译器比AWS控制台更敏感。exports.handler中LaunchRequestHandler后面的,
被解释为错误。删除此选项后,它将正常工作。希望这能帮助其他遇到类似问题的人