What could cause a HPE_INVALID_METHOD error using fastify and nunjucks? - nunjucks
I disabled all plugins on the server except point-of-view.
fastify.register(require('point-of-view'), {
engine: {
nunjucks: require('nunjucks')
},
templates: 'server/views',
includeViewExtension: true
})
The handler is calling the view function.
reply.view('/v1/main', {
nonce: nanoid(1),
token: nanoid(1)
})
The complete error message is:
{"level":50,"time":1547208496144,"msg":"client error","pid":16013,"hostname":"jer-ryzentwo","err":{"type":"Error","message":"Parse Error","stack":"Error: Parse Error","bytesParsed":0,"code":"HPE_INVALID_METHOD","rawPacket":{"type":"Buffer","data":[22,3,1,2,0,1,0,1,105,3,3,167,247,206,59,236,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},"v":1}
{"level":50,"time":1547208496145,"msg":"client error","pid":16013,"hostname":"jer-ryzentwo","err":{"type":"Error","message":"Parse Error","stack":"Error: Parse Error","bytesParsed":0,"code":"HPE_INVALID_METHOD","rawPacket":{"type":"Buffer","data":[10,0,1,0,2,2,20]}},"v":1}
I cannot pinpoint the source of this issue.
Any idea what and why a HPE_INVALID_METHOD error is being generated?
Related
Source GraphQL API: HTTP error 400 Bad Request
I've set up an apollo federation architecture accessible via a gateway. I want to access it via gatsby using the official plugin gatsby-source-graphql. I've followed their documentation and attempted to include the plugin with the "simple" example. When I run yarn build on my gatsby project I get the following termanal output: success onPreInit - 0.048s success initialize cache - 0.033s success copy gatsby files - 0.139s success Compiling Gatsby Functions - 0.239s success onPreBootstrap - 0.258s success createSchemaCustomization - 0.003s ERROR #11321 PLUGIN "gatsby-source-graphql" threw an error while running the sourceNodes lifecycle: Source GraphQL API: HTTP error 400 Bad Request Error: Source GraphQL API: HTTP error 400 Bad Request - fetch.js:11 exports.fetchWrapper [yotee.co]/[gatsby-source-graphql]/fetch.js:11:11 - task_queues:96 processTicksAndRejections node:internal/process/task_queues:96:5 My gatsby-config.js is this: module.exports = { siteMetadata: { url: "https://www.XXXX.co", title: "XXXX", description: "", }, plugins: [ { resolve: 'gatsby-source-graphql', options: { typeName: 'Gateway', fieldName: 'gateway', url: 'https://XXXXXX' } }, "gatsby-plugin-styled-components", "gatsby-plugin-gatsby-cloud", "#chakra-ui/gatsby-plugin", "gatsby-plugin-react-helmet" ], }; The error "Source GraphQL API: HTTP error 400 Bad Request" is extremely vague, and I'm unable to get a more verbose message error. What can I do to better understand this error and solve it?
The gatsby plugin will attempt to retreive the schema from your apollo-server. Ensure that introspection is enabled in production so this step does not fail. {"extensions":{"code":"GRAPHQL_VALIDATION_FAILED"},"level":"warn","locations":[{"column":3,"line":2}],"message":"GraphQL introspection is not allowed by Apollo Server, but the query contained __schema or __type. To enable introspection, pass introspection: true to ApolloServer in production"} By: const server = new ApolloServer({ // other properties introspection: true });
Cypress error Cypress.moment.duration (moment is not defined)
I'm using Cypress and upgraded to version to v8.3.1 and a new error keeps showing up. Cannot read property 'duration' of undefined Because this error occurred during a after all hook we are skipping all of the remaining tests. Location: node_modules/#cypress/code-coverage/support.jsat line210 cy.task('coverageReport', null, { timeout: Cypress.moment.duration(3, 'minutes').asMilliseconds(), ^ log: false }) It says that duration cannot be found since Cypress.moment doesn't exist. I checked the changelog and they removed it: Cypress.moment() has been removed. Please migrate to a different datetime formatter. See our recipe for example replacements. Addresses #8714. But since I'm not directly using it, it's in the code coverage included in Cypress, I don't know how to fix it.
Somehow you've obtained an old version of #cypress/code-coverage. Perhaps you upgraded Cypress and not the code-coverage package? #cypress/code-coverage#3.2.0 - support.js after(function generateReport() { // when all tests finish, lets generate the coverage report cy.task('coverageReport', { timeout: Cypress.moment.duration(3, 'minutes').asMilliseconds() }) }) #cypress/code-coverage#3.9.10 - support.js after(function generateReport() { ... cy.task('coverageReport', null, { timeout: dayjs.duration(3, 'minutes').asMilliseconds(), log: false }).then((coverageReportFolder) => { ... }) npm update #cypress/code-coverage should fix it
No such DSL method 'steps' found among steps
I'm trying to post to a Slack channel whenever CI fails using a groovy script. But however when I try to implement this inside failure block I'm getting this error Error when executing failure post condition: java.lang.NoSuchMethodError: No such DSL method 'steps' found among steps [archive, bat, build, catchError, checkout, deleteDir, dir, dockerFingerprintFrom, dockerFingerprintRun, echo, envVarsForTool, error, fileExists, getContext, git, input, isUnix, junit, library, libraryResource, load, lock, mail, milestone, node, parallel However, I was able to apply this same code to send Slack notifications in other pipelines under stages blocks. Looks as if it's having issues when applied to post block. post { always { cleanWs() } failure { steps { slackSend baseUrl: 'https://hooks.slack.com/services/', channel: '#build-failures', iconEmoji: '', message: "CI failing for - #${env.BRANCH_NAME} - ${currentBuild.currentResult} (<${env.BUILD_URL}|Open>)", teamDomain: 'differentau', tokenCredentialId: 'slack-token-build-failures', username: '' } } }
this should work: post { always { cleanWs() } failure { slackSend baseUrl: 'https://hooks.slack.com/services/', channel: '#build-failures', iconEmoji: '', message: "CI failing for - #${env.BRANCH_NAME} - ${currentBuild.currentResult} (<${env.BUILD_URL}|Open>)", teamDomain: 'differentau', tokenCredentialId: 'slack-token-build-failures', username: '' } }
Why isn't fineUploader sending an x-amz-credential property among the request conditions?
My server-side policy signing code is failing on this line: credentialCondition = conditions[i]["x-amz-credential"]; (Note that this code is taken from the Node example authored by the FineUploader maintainer. I have only changed it by forcing it to use version 4 signing without checking for a version parameter.) So it's looking for an x-amz-credential parameter in the request body, among the other conditions, but it isn't there. I checked the request in the dev tools and the conditions look like this: 0: {acl: "private"} 1: {bucket: "menu-translator"} 2: {Content-Type: "image/jpeg"} 3: {success_action_status: "200"} 4: {key: "4cb34913-f9dc-40db-aecc-a9fdf518a334.jpg"} 5: {x-amz-meta-qqfilename: "f86d03fb-1b62-4073-9458-17e1dfd8b3ae.jpg"} As you can see, no credentials. Here is my client-side options code: var uploader = new qq.s3.FineUploader({ debug: true, element: document.getElementById('uploader'), request: { endpoint: 'menu-translator.s3.amazonaws.com', accessKey: 'mykey' }, signature: { endpoint: '/s3signaturehandler' }, iframeSupport: { localBlankPagePath: '/views/blankForIE9Support.html' }, cors: { expected: true, sendCredentials: true }, uploadSuccess: { endpoint: 'success.html' } }); What am I missing here?
I fixed this by altering my options code in one small way: signature: { endpoint: '/s3signaturehandler', version: 4 }, I specified version: 4 in the signature section. Not that this is documented anywhere, but apparently the client-side code uses this as a flag for whether or not to send along the key information needed by the server.
How to unit test graphql query/mutation error with Mocha and Chai?
Since graphql error is not an standard Error. It's a GraphQLError I can't figure out how to write unit test when graphql query/mutation throw an exception. Here is my try: it('should throw an error when lack of "id" argument for user query', async () => { const body = { query: ` query user{ user { id name } } ` }; try { const actualValue = await rp(body); } catch (err) { logger.error(err); } // logger.info(actualValue); expect(1).to.be.equal(1); // expect(actualValue).to.throw() }); I found some tests in graphql.js repo. https://github.com/graphql/graphql-js/blob/master/src/tests/starWarsQuery-test.js#L393 But I think the way they test the query/mutation error is not correct. They just do a deep equal with the error. But before running the test suites, how do I know the error data structure like locations: [{ line: 5, column: 13 }],? Maybe I should use snapshot testing so that I don't need to know the error data structure?
Check this package https://github.com/EasyGraphQL/easygraphql-tester there is an example with mocha and chai on the documentation