我试着按照这个例子,https://www.apollographql.com/docs/apollo-server/deployment/lambda/,以创建返回“Hello world”的无服务器GraphQL服务器。
根目录基本上只包含两个文件,graphql。js和无服务器。yml:
> tree . -I node_modules
.
├── graphql.js
├── package-lock.json
├── package.json
└── serverless.yml
其中,如示例中所示,
graphql。js读取
const { ApolloServer, gql } = require('apollo-server-lambda');
const typeDefs = gql`
type Query {
hello: String
}
`;
const resolvers = {
Query: {
hello: () => 'Hello world!',
},
}
const server = new ApolloServer({ typeDefs, resolvers });
exports.graphqlHandler = server.createHandler();
和无服务器。yml读取
service: apollo-lambda
provider:
name: aws
runtime: nodejs8.10
functions:
graphql:
handler: graphql.graphqlHandler
events:
- http:
path: graphql
method: post
cors: true
- http:
path: graphql
method: get
cors: true
这似乎已成功部署:
> serverless deploy
Serverless: Packaging service...
Serverless: Excluding development dependencies...
Serverless: Creating Stack...
Serverless: Checking Stack create progress...
.....
Serverless: Stack create finished...
Serverless: Uploading CloudFormation file to S3...
Serverless: Uploading artifacts...
Serverless: Uploading service apollo-lambda.zip file to S3 (4.55 MB)...
Serverless: Validating template...
Serverless: Updating Stack...
Serverless: Checking Stack update progress...
....................................
Serverless: Stack update finished...
Service Information
service: apollo-lambda
stage: dev
region: us-east-1
stack: apollo-lambda-dev
resources: 12
api keys:
None
endpoints:
POST - https://e9g6evoks0.execute-api.us-east-1.amazonaws.com/dev/graphql
GET - https://e9g6evoks0.execute-api.us-east-1.amazonaws.com/dev/graphql
functions:
graphql: apollo-lambda-dev-graphql
layers:
None
Serverless: Run the "serverless" command to setup monitoring, troubleshooting and testing.
但是,如果我去操场查询“你好”,我会收到一条“禁止”消息:
那就是,我的
query {
hello
}
而不是导致响应记录在https://www.apollographql.com/docs/apollo-server/essentials/server/,结果为
{
"error": {
"message": "Forbidden"
}
}
知道我做错了什么吗?
实际上,最初的教程已经有了解决方案(设置GraphQL游乐场)。只需按如下所示编辑您的代码。
const server = new ApolloServer({
typeDefs,
resolvers,
playground: {
endpoint: "/dev/graphql"
}
});
好的,我找到了错误。apollo-server-lamdba存在已知问题。
浏览操场时(在https://e9g6evoks0.execute-api.us-east-1.amazonaws.com/dev/graphql),endpoint的url是带前缀的,但它缺少了部分(serverless.yml中定义的阶段部分)。只需添加它,这将很好地工作。
cfr:https://github.com/apollographql/apollo-server/issues/2136#issuecomment-458465128
我在web服务器上使用apollo客户端与graphql服务器(也是apollo)通信。我有一个成功的查询,可以正常工作和检索数据,但当我尝试变异时,我会收到新的Apollo错误消息。复制/粘贴到graphiql中的相同突变非常有效。 我已经检查了graphql服务器上的CORS,它已启用并正常运行。我已经将代码中的变体复制并粘贴到graphiql编辑器中,它按预期工作。 有人能为我解释一下吗,或
我在使用fusesource代码将mqtt消息发布到Apollo服务器时遇到了问题。我使用如下代码编写了消息发布程序
使用Node.js创建Lambda Hello world函数,并为Get调用创建API网关触发器,尝试使用URL访问Lambda函数,出现以下错误。 消息:"内部服务器错误"。 (AWS非常新)
我在一个网站上工作,跟踪待办事项列表,并从服务器上提取它。下面有两个示例ajax调用。任务GET调用工作正常,但添加POST不工作。出于某种原因,它给我一个403禁止的错误,结果,不执行代码。 在Django框架中发出ajax Post请求时,我看到了403禁止的错误,我阅读了@yohn发布的链接,但我不理解如何实现这个解决方案。
服务器错误信息来自下述源文件: ·错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串,显示时,它们将被消息值取代。 ·错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.h MySQL源文件中的定义。 ·SQLSTATE值列在share/errmsg.txt文
我经常遇到这个错误,以至于php_error日志文件每2秒增加1MB。并且站点非常慢。 我试着把这条线添加到wp-db.php 但这并没有帮助。 Web服务器是IIS 7,最新版本的mysql和wordpress