无服务器:此服务中不存在该功能
serverless: function doesn't exist in this service
在无服务器中,我的函数具有以下目录结构:
serverless.yml
functions -
stories -
create.js
get.js
我的 serverless.yml
然后看起来像这样:
functions:
stories:
create:
handler: functions/stories/create.main
events:
- http:
path: stories/create
method: post
cors: true
authorizer: aws_iam
get:
handler: functions/stories/get.main
events:
- http:
path: stories/{id}
method: get
cors: true
authorizer: aws_iam
然而,当我 运行 检查创建的测试时:serverless invoke local --function create --path mocks/create-event.json
我得到以下错误:
Serverless Error ---------------------------------------
Function "create" doesn't exist in this Service
我设法使一个功能正常工作,如下所示:
functions:
stories:
handler: functions/stories/create.main
events:
- http:
path: stories/create
method: post
cors: true
authorizer: aws_iam
自从我添加了 get 函数后,我决定我需要在故事之后添加 create 和 get 部分,但是无论我如何更改处理程序,这些函数似乎都不存在。
我已经尝试将路径更改为 functions/stories/create/create.main
没有任何区别,是否有明显的遗漏以允许同一位置的多个处理程序?
我在看下面的example,它使用了"todos"的一个文件夹,其中包含多个函数,但我看不出它和我的有什么明显的区别,除了我已经添加了一个额外的文件夹。
您的模板无效。您不能只是将您的函数放在任意节点下以告诉框架它适用于您应用程序的某些对象。您的 stories:
节点应该是评论。
尝试这样的事情:
functions:
# Stories related functions
createStory:
handler: functions/stories/create.main
events:
- http:
path: stories # You can post directly to stories to be more RESTful
method: post
cors: true
authorizer: aws_iam
getStory:
handler: functions/stories/get.main
events:
- http:
path: stories/{id}
method: get
cors: true
authorizer: aws_iam
# More examples to understand the routing
getAllStories:
handler: functions/stories/getAll.main # Returns a list of all stories
events:
- http:
path: stories
method: get
cors: true
authorizer: aws_iam
deleteStory:
handler: functions/stories/delete.main # Deletes a story
events:
- http:
path: stories/{id}
method: delete
cors: true
authorizer: aws_iam
花了这么多时间!刚发现当我输入命令时,我在 handle.js 文件中提到了函数名称
例如
这是错误的:
sls invoke local --function testFunction
这是对的:
sls invoke local --function test
在无服务器中,我的函数具有以下目录结构:
serverless.yml
functions -
stories -
create.js
get.js
我的 serverless.yml
然后看起来像这样:
functions:
stories:
create:
handler: functions/stories/create.main
events:
- http:
path: stories/create
method: post
cors: true
authorizer: aws_iam
get:
handler: functions/stories/get.main
events:
- http:
path: stories/{id}
method: get
cors: true
authorizer: aws_iam
然而,当我 运行 检查创建的测试时:serverless invoke local --function create --path mocks/create-event.json
我得到以下错误:
Serverless Error ---------------------------------------
Function "create" doesn't exist in this Service
我设法使一个功能正常工作,如下所示:
functions:
stories:
handler: functions/stories/create.main
events:
- http:
path: stories/create
method: post
cors: true
authorizer: aws_iam
自从我添加了 get 函数后,我决定我需要在故事之后添加 create 和 get 部分,但是无论我如何更改处理程序,这些函数似乎都不存在。
我已经尝试将路径更改为 functions/stories/create/create.main
没有任何区别,是否有明显的遗漏以允许同一位置的多个处理程序?
我在看下面的example,它使用了"todos"的一个文件夹,其中包含多个函数,但我看不出它和我的有什么明显的区别,除了我已经添加了一个额外的文件夹。
您的模板无效。您不能只是将您的函数放在任意节点下以告诉框架它适用于您应用程序的某些对象。您的 stories:
节点应该是评论。
尝试这样的事情:
functions:
# Stories related functions
createStory:
handler: functions/stories/create.main
events:
- http:
path: stories # You can post directly to stories to be more RESTful
method: post
cors: true
authorizer: aws_iam
getStory:
handler: functions/stories/get.main
events:
- http:
path: stories/{id}
method: get
cors: true
authorizer: aws_iam
# More examples to understand the routing
getAllStories:
handler: functions/stories/getAll.main # Returns a list of all stories
events:
- http:
path: stories
method: get
cors: true
authorizer: aws_iam
deleteStory:
handler: functions/stories/delete.main # Deletes a story
events:
- http:
path: stories/{id}
method: delete
cors: true
authorizer: aws_iam
花了这么多时间!刚发现当我输入命令时,我在 handle.js 文件中提到了函数名称 例如 这是错误的:
sls invoke local --function testFunction
这是对的:
sls invoke local --function test