amazon-ion / ion-js

A JavaScript implementation of Amazon Ion.
http://amzn.github.io/ion-docs/
Apache License 2.0
353 stars 48 forks source link

ion-js TypeError: Failed to convert parameter ... to Ion Binary: j_.Value.from is not a function #759

Open m-soli opened 1 year ago

m-soli commented 1 year ago

With latest esbuild release - deploying a cdk application that uses esbuild to bundle typescript before deplying lambda code for a QLDB client service. Facing following error on execute transaction function from AWS qldb nodejs driver typescript: j_.Value.from is not a function.

After tracing found: It is coming from ion-js Value type.

Something changed between v0.17.18 and latest esbuild that cdk uses by default. Making compiling the ion-js typescript code not properly build the relevant Javascript object.

After locking the esbuild version to 0.17.18 the code compiled correctly.

Uncertain but suspect it has something to do with namespace, interface and class declarations for Value here: https://github.com/amazon-ion/ion-js/blob/master/src/dom/Value.ts

desaikd commented 1 year ago

Can you please provide more context here? What is the typescript version as well as ion-js version being used? If you can also provide a minimal example of how ion-js is being used here that would be helpful.

m-soli commented 1 year ago

Can you please provide more context here? What is the typescript version as well as ion-js version being used? If you can also provide a minimal example of how ion-js is being used here that would be helpful.

Versions: from package.json "ion-js": "^4.3.0" "typescript": "~5.1.3"

ion-js wasn't used directly but part of the amazon-qldb-nodejs-driver

the error is raised here from trying to dumpBinary https://github.com/awslabs/amazon-qldb-driver-nodejs/blob/master/src/Transaction.ts#L141

This occurred when using latest esbuild version to deploy the cdk app that talks to qldb but when locking esbuild to v0.17.18 it works fine

making me suspect a typescript build issue for the Value interface