AWS无服务器部署错误NodeJS

时间:2018-07-26 01:39:46

标签: javascript node.js amazon-web-services lambda serverless-framework

我有一个相当基本的NodeJS API,我已经使用NodeJS中用于AWS的无服务器框架离线构建了该API。我已经在脱机配置中正常工作,但是当我尝试进行部署时,最初收到以下日志错误:

Unable to import module 'services/tv/get/handler': Error
at Function.Module._resolveFilename (module.js:469:15)
at Function.Module._load (module.js:417:25)
at Module.require (module.js:497:17)
at require (internal/module.js:20:19)

我在GitHub上找到了几个讨论类似问题in this thread的线程,但是经过研究之后,我无法根据自己的情况进行任何修复。我已经检查了已部署的zip文件,它似乎具有所需的依赖关系。

Serverless.yml

service: show-stoppers-lambda

provider:
  name: aws
  runtime: nodejs8.10
  memorySize: 128
  timeout: 10
  stage: production
  region: ap-southeast-1

functions:

  getNowAiringTv:
    handler: services/tv/get/handler.getNowAiringTv
    events:
      - http:
          path: tv/now
          method: get
          cors: true

  getTvShowDetails:
    handler: services/tv/get/handler.getShowDetails
    events:
      - http:
          path: tv/{showId}
          method: get
          cors: true

  getTvShowSearch:
    handler: services/tv/get/handler.getShowSearch
    events:
      - http:
          path: tv/search/{query}
          method: get
          cors: true

  getDiscoverTvFilter:
    handler: services/tv/get/handler.getDiscoverTv
    events:
      - http:
          path: tv/filter
          method: get
          cors: true

  getSimilarTvShows:
    handler: services/tv/get/handler.getSimilarShows
    events:
      - http:
          path: tv/similar/{showId}
          method: get
          cors: true

  getTvSeasonDetail:
    handler: services/tv/get/handler.getTvSeasons
    events:
      - http:
          path: tv/{showId}/{season}
          method: get
          cors: true

  getTvSeasonEpisodeDetail:
    handler: services/tv/get/handler.getTvEpisodes
    events:
      - http:
          path: tv/{showId}/{season}/{episode}
          method: get
          cors: true


plugins:
  - serverless-offline

Package.json

{
  "name": "show-stoppers-lambda",
  "version": "1.0.0",
  "description": "",
  "main": "handler.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "alex",
  "license": "ISC",
  "devDependencies": {
    "serverless-offline": "^3.25.6"
  },
  "dependencies": {
    "bcryptjs": "^2.4.3",
    "dotenv": "^6.0.0",
    "jsonwebtoken": "^8.3.0",
    "moment": "^2.22.2",
    "mongoose": "^5.1.5",
    "request": "^2.87.0"
  }
}

完整的代码在我的github here上,并且我包含了package.zip here,其中包含内容(.env之前为空)。我希望有人可以向我展示我在哪里出错,在使用无服务器Webpack之前我已经看到了一些建议,但是对于像这样的小东西,我不确定是否需要它,也不确定如何设置它要么在这里工作。

更新

我发现我收到500多个错误的原因是由于Request,我仍然不清楚为什么该依赖性似乎包含在zip中,但也许它缺少它所需要的一个。那。我将稍作介绍,但目前我已经通过使用HTTPS模块的简单实现来解决此问题,现在所有请求均正确触发

1 个答案:

答案 0 :(得分:0)

您是否包含正确的文件?您的handler.js代码似乎只有一个功能hello,需要将其引用为handler.hello。如果这只是在此处询问问题的伪文件,请尝试将yaml中的函数引用为handler.<function-name>