This forum is a read-only archive. Posting, replying and signing in are disabled.

Error: Parser is unable to parse the response

vikram

Hi,

I am using V2 api and my transaction does go through successfully but when I try to get the status I get the following error:

Error: Parser is unable to parse the response
at Request.<anonymous> (client.js:402)
at Request.push../node_modules/component-emitter/index.js.Emitter.emit (index.js:145)
at XMLHttpRequest.xhr.onreadystatechange (client.js:707)

The error is generated at
const pendingInfo = await algodclient.pendingTransactionInformation(txId).do();

I am using algosdk version 1.6.2

const api = "https://testnet-algorand.api.purestake.io/ps2";
const algodclient = new algosdk.Algodv2(    
token, 
api, 
port

);

The problem seems that the call to algodclient.pendingTransactionInformation() goes to /node_modules/algosdk/src/client/algod.js
which in turn calls
await c.get("/v1/transactions/pending/" + txid, {}, headers);

Now here it says “v1” … I guess this is causing the error

FYI, I can not use the more latest version of the sdk 1.7.0 as I have a bigger error there.
Any thoughts on how to resolve this?

edited
Tim

Are you able to update to 1.7.0? I ran that version and it does work, although there is a known bug in the client (https://github.com/algorand/js-algorand-sdk/issues/173) that is resolve in 1.7.1 (not yet available in NPM).

To temporarily resolve that, you can either use the method in the PR of the linked issue, or just edit the client.js file and in the HTTPclient declaration switch .set('Accept', 'application/json') to .set('Accept', 'application/*')

Tested code using a tx generated earlier -

const algosdk = require('algosdk');
const baseServer = "https://testnet-algorand.api.purestake.io/ps2";
const port = "";

const token = {
    'X-API-key' : 'YOUR KEY HERE',
}

let algodClient = new algosdk.Algodv2(token, baseServer, port);


(async() => {
    let block = await algodClient.pendingTransactionInformation('HSLY464G6I7F66GRUSXQ3MUTEEBIK3IABPJ576OB6GSY6P5KU5LA').do();
    console.log(block)
})().catch(e => {
    console.log(e);
});