首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无服务器错误TypeError:无法读取未定义的属性'toLowerCase‘

问无服务器错误TypeError:无法读取未定义的属性'toLowerCase‘
EN

Stack Overflow用户
提问于 2021-09-13 16:15:20
回答 2查看 326关注 0票数 0

我试着从serverless部署类似this example的东西。在构建我的serverless.yml时,我遇到了这个错误,我找不到要处理的句柄:

代码语言:javascript
复制
service: products-api

package:
  artifact: target\products-api-dev.jar
  #artifact: target\${self:service}-${self:provider.stage}.jar #cool alternative :)

provider:
  name: aws
  runtime: java8

#Copy-pasted
resources:
  Resources:
    productsTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: products_table
        AttributeDefinitions:
          - AttributeName: id
            AttributeType: S
          - AttributeName: name
            AttributeType: S
        KeySchema:
          - AttributeName: id
            KeyType: HASH
          - AttributeName: name
            KeyType: RANGE
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1

functions:
  listProducts:
    handler: com.serverless.ListProductsHandler
    events:
      - http:
          path: /products
          method: get
  getProduct:
    handler: com.serverless.GetProductHandler
    events:
      - http:
          path: /products/{id}
          method: get
  createProduct:
    handler: com.serverless.CreateProductHandler
    events:
      - http:
          path: /products
          method: post
  deleteProduct:
    handler: com.serverless.DeleteProductHandler
    events:
      - http:
          path: /products/{id}

我得到的错误是这样的--在我自己的代码中没有对错误的引用,这使得我很难找出哪里出了错。我研究了许多Q/A,包括this和this,但它似乎更多的是javascript和typescript的问题,而不是像这里那样的无服务器。

代码语言:javascript
复制
 Type Error ----------------------------------------------

  TypeError: Cannot read property 'toLowerCase' of undefined
      at AwsCompileApigEvents.getHttpMethod (C:\snapshot\serverless\lib\plugins\aws\package\compile\events\apiGateway\lib\validate.js:195:24)
      at C:\snapshot\serverless\lib\plugins\aws\package\compile\events\apiGateway\lib\validate.js:50:30
      at Array.forEach (<anonymous>)
      at C:\snapshot\serverless\lib\plugins\aws\package\compile\events\apiGateway\lib\validate.js:45:37
      at Array.forEach (<anonymous>)
      at AwsCompileApigEvents.validate (C:\snapshot\serverless\lib\plugins\aws\package\compile\events\apiGateway\lib\validate.js:44:55)
      at Object.package:compileEvents [as hook] (C:\snapshot\serverless\lib\plugins\aws\package\compile\events\apiGateway\index.js:318:31)
      at PluginManager.invoke (C:\snapshot\serverless\lib\classes\PluginManager.js:579:20)
      at async PluginManager.spawn (C:\snapshot\serverless\lib\classes\PluginManager.js:601:5)
      at async Object.before:deploy:deploy [as hook] (C:\snapshot\serverless\lib\plugins\deploy.js:60:11)
      at async PluginManager.invoke (C:\snapshot\serverless\lib\classes\PluginManager.js:579:9)
      at async PluginManager.run (C:\snapshot\serverless\lib\classes\PluginManager.js:639:7)
      at async Serverless.run (C:\snapshot\serverless\lib\Serverless.js:452:5)
      at async C:\snapshot\serverless\scripts\serverless.js:751:9
     For debugging logs, run again after setting the "SLS_DEBUG=*" environment variable.
EN

回答 2

Stack Overflow用户

发布于 2021-09-13 16:16:12

andymac4182有the solution for your problem的想法,而且它实际上非常简单。您必须为每个http元素定义一个方法,对于最后一个元素,缺少以下内容:method: post

更新:

代码语言:javascript
复制
  deleteProduct:
    handler: com.serverless.DeleteProductHandler
    events:
      - http:
          path: /products/{id}
          method: post
票数 0
EN

Stack Overflow用户

发布于 2021-09-13 17:45:43

Serverless是一个javascript项目,这就是为什么你会看到一个javascript错误。

您的函数之一似乎是HTTP端点,但缺少任何方法。这似乎是错误的原因。

尝试将method: DELETE添加到终结点:

代码语言:javascript
复制
  deleteProduct:
    handler: com.serverless.DeleteProductHandler
    events:
      - http:
          path: /products/{id}
          method: DELETE
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69166004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档