Javascript 输入意外结束:从AWS API网关获取响应时出现客户端错误

Javascript 输入意外结束:从AWS API网关获取响应时出现客户端错误,javascript,amazon-web-services,angular,graphql,apollo,Javascript,Amazon Web Services,Angular,Graphql,Apollo,我在Angualar应用程序中使用Apollo,现在我正在讨论这个问题。我在AWS Lambda上有一个GraphQL端点,通过API网关,我看到响应正确返回,但当它通过读取时,会抛出此错误。AWS正在使用LAMBDA_代理 //setup const client = new ApolloClient({ networkInterface: createNetworkInterface({ opts: { mode: 'no-cors', }, uri:

我在Angualar应用程序中使用Apollo,现在我正在讨论这个问题。我在AWS Lambda上有一个GraphQL端点,通过API网关,我看到响应正确返回,但当它通过读取时,会抛出此错误。AWS正在使用LAMBDA_代理

//setup
const client = new ApolloClient({
  networkInterface: createNetworkInterface({
    opts: {
      mode: 'no-cors',
    },
    uri: "https://xxxxxxx.execute-api.ap-southeast-2.amazonaws.com/dev/graphql"
  }),
});

//make the call
this.apollo.watchQuery({
        forceFetch: true,
        query: QueryToSend
    }).subscribe(({data}) => {
        ...process...

    }, error => {
        console.log(error);
    });

//the error...
Network error: Unexpected end of input
    at new ApolloError (ApolloError.js:31)
    at QueryManager.js:128
    at t.invoke (polyfills.js:3)
    at Object.onInvoke (ng_zone.js:236)
    at t.invoke (polyfills.js:3)
    at e.run (polyfills.js:3)
    at polyfills.js:3
    at t.invokeTask (polyfills.js:3)
    at Object.onInvokeTask (ng_zone.js:227)
    at t.invokeTask (polyfills.js:3)
请求是

const QueryToSend= gql`
    query data { 
        getSuperDefinitionList{
            id,
            name, 
        }
    }
`;
不知道怎么了。我从Postman和SoapUI调用相同的请求体。我甚至看到小提琴手的反应是正确的

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: ...
Connection: keep-alive
Date: Fri, 13 Jan 2017 21:10:10 GMT
x-amzn-RequestId: ab0fghjghja-d9d4-11e6-b19a-090dsfvdgcebe
X-Amzn-Trace-Id: Root=1-58794232-c7f7157d28e033330dbbe6f2
X-Cache: Miss from cloudfront
Via: 1.1 a1d4b598e9b2fghjgfhj3991961a666a6.cloudfront.net (CloudFront)
X-Amz-Cf-Id: XHeOfghjfghjUthDPKxVbCrFoLM4iOYpf9X9mWlu2Z374grmuAv5jMjg==

{"data":{"getSuperDefinitionList":[{"id":"83d3b09f-a947-4a33-bcb0-f5c9e0446ace","name":"S","__typename":"SuperDefinitionType"}]}}
从AWS看来一切正常,但Apollo或它使用的一些javascript库则不然


我能做什么呢?

写完这篇文章后,我有一种预感

我搬走了

opts: {
  mode: 'no-cors',
},
并确保返回了正确的标题(省略了最后3个):

var response=新的APIGatewayProxyResponse
{
StatusCode=result.result.IsError?(int)HttpStatusCode.BadRequest:(int)HttpStatusCode.OK,
Body=result.result.Body,
Headers=新字典{
{“内容类型”,“应用程序/json”},
{“访问控制允许来源”,“*”},
{“访问控制允许方法”、“获取、发布、选项”},
{“访问控制允许标头”、“连接、主机、来源、引用器、访问控制请求方法、访问控制请求标头、用户代理、接受、内容类型、授权、内容长度、X-Requested-With、接受编码、接受语言”},
}
};
        var response = new APIGatewayProxyResponse
        {
            StatusCode = result.Result.IsError ? (int)HttpStatusCode.BadRequest : (int)HttpStatusCode.OK,
            Body = result.Result.Body,
            Headers = new Dictionary<string, string> {
                { "Content-Type", "application/json" },
                { "Access-Control-Allow-Origin", "*" },
                { "Access-Control-Allow-Methods", "GET,POST,OPTIONS" },
                { "Access-Control-Allow-Headers", "Connection, Host, Origin, Referer, Access-Control-Request-Method, Access-Control-Request-Headers, User-Agent, Accept, Content-Type, Authorization, Content-Length, X-Requested-With, Accept-Encoding, Accept-Language" },
             }
        };