我一直在大堆栈启动中开发一个应用程序,在克服了许多障碍之后,我终于想要部署它并看到它运行。我的目标是在亚马逊上做这一切。前端服务正常,Neo4j实例运行在EC2实例上。
由于大堆栈启动程序使用的是阿波罗,他们的网站建议使用Serverless。我认为我遇到的问题是缺少有关所需文件夹结构的信息。大堆栈启动程序有一个src文件夹,其中核心文件与位于较高目录的package.json共存。
Serverless说要在根目录中创建一个serverless.yml文件,我有一个比源代码更高的目录。它的内容是一成不变的:
# serverless.yml
service: apollo-lambda
provider:
name: aws
runtime: nodejs6.10
region: us-west-2
stage: production
functions:
graphql:
# this is formatted as <FILENAME>.<HANDLER>
handler: graphql.graphqlHandler
events:
- http:
path: graphql
method: post
cors: true运行无服务器部署确实成功地打包了文件,将它们推送到S3桶并将其添加到Lambda中。它的重量约为10毫巴。但是,当我在AWS Lambda中尝试对创建的Lambda函数运行测试时,它会说“无法找到模块'/var/task/graphql”。
感觉好像它无法访问我的node_modules。有些人让打包的zip文件意外地包装了所有的文件夹,但是由Serverless生成的阿波罗-lambda.zip并没有这样做。我能很好地看到我的根结构。
在过去的两天里,我花了很多时间来解决我最初认为的502个错误,然后是403个错误,试图找出我忘了做什么事情的地方,直到我达到这个地步。任何帮助都将不胜感激。
坦率地说,我只是不确定在部署时我的文件夹结构应该是什么样子。如果我在src文件夹中移动serverless.yml,它将不具有package.json或node_modules文件夹
发布于 2018-12-01 07:58:50
因此,我不得不重新工作我的代码。在技术上回答我问题的问题是,我在serverless.yml中找到了处理程序选项,让我向下走,这样我就能够指示构建来查看src/中的文件。
然而,在此之后的另一个问题是,我不得不将所有导入语句重新工作,而不是用require语句来继续。即使使用更新的nodejs版本,我也无法让导入在Lambda上工作。也许有办法解决这个问题,但我还没找到。
https://stackoverflow.com/questions/53554682
复制相似问题