Kong / httpsnippet

HTTP Request snippet generator for many languages & libraries
Apache License 2.0
1.15k stars 228 forks source link

Error: strict mode: unknown keyword: "afterRequest" #335

Open Harsh062 opened 10 months ago

Harsh062 commented 10 months ago

I am getting the below error when executing the basic example provided in the docs in my NodeJs project:

/Users/harsh/Desktop/http-snippet-demo/node_modules/ajv/dist/compile/index.js:120
        throw e;
        ^

Error: strict mode: unknown keyword: "afterRequest"
    at checkStrictMode (/Users/harsh/Desktop/http-snippet-demo/node_modules/ajv/dist/compile/util.js:174:15)
    at checkUnknownRules (/Users/harsh/Desktop/http-snippet-demo/node_modules/ajv/dist/compile/util.js:32:13)
    at checkKeywords (/Users/harsh/Desktop/http-snippet-demo/node_modules/ajv/dist/compile/validate/index.js:120:34)
    at validateFunctionCode (/Users/harsh/Desktop/http-snippet-demo/node_modules/ajv/dist/compile/validate/index.js:19:9)
    at Ajv.compileSchema (/Users/harsh/Desktop/http-snippet-demo/node_modules/ajv/dist/compile/index.js:80:45)
    at Ajv.resolveSchema (/Users/harsh/Desktop/http-snippet-demo/node_modules/ajv/dist/compile/index.js:193:23)
    at Ajv.getSchema (/Users/harsh/Desktop/http-snippet-demo/node_modules/ajv/dist/core.js:279:43)
    at validateHarRequest (/Users/harsh/Desktop/http-snippet-demo/node_modules/httpsnippet/dist/helpers/har-validator.js:66:24)
    at /Users/harsh/Desktop/http-snippet-demo/node_modules/httpsnippet/dist/httpsnippet.js:262:56
    at Array.forEach (<anonymous>)

Example Code:

const express = require('express');
const { HTTPSnippet } = require('httpsnippet');

const app = express();

const snippet = new HTTPSnippet({
  method: 'GET',
  url: 'http://mockbin.com/request',
});

const options = { indent: '\t' };
const output = snippet.convert('shell', 'curl', options);
console.log(output);

const server = app.listen(8000, '0.0.0.0', () => {
  console.log('Example app listening at http://%s:%s', server.address().address, server.address().port);
});

httpsnippet version in package.json file: ^3.0.1 NodeJs version: 18.17

I am getting the same error via CLI as well when executing the below command: httpsnippet example.json --target shell --client curl --output ./examples

austineady commented 9 months ago

Seeing the same issue with Node v20.10.0. Only reference to afterRequest I can find is within the har-schema package.

mattvalleycodes commented 7 months ago

@austineady @Harsh062 I believe you're getting this error because the version of the ajv you're using is 8 while version 6 is needed for httpsnippet. If you do downgrade to 6, the error should go away. Interestingly enough, ajv is not defined as dep for httpsnippet while it's been used. It's only defined as dependency within har-schema, and I' guessing ajv v8 has some breaking changes.

vaibhavrajsingh2001 commented 1 month ago

@Harsh062 @austineady you shouldn't face this error anymore from v3.0.7 onwards. Fixed as part of #371.