我有一个相当基本的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模块的简单实现来解决此问题,现在所有请求均正确触发
答案 0 :(得分:0)
您是否包含正确的文件?您的handler.js
代码似乎只有一个功能hello
,需要将其引用为handler.hello
。如果这只是在此处询问问题的伪文件,请尝试将yaml中的函数引用为handler.<function-name>