Problem with webpack (UglifyJS) and version bitcoinjs-lib@3.1.1
See original GitHub issueI have a project using a Webpack boilerplate (https://github.com/Josema/preact-webpack-hmr) that has two environments. dev
and prod
. On dev, I don’t have any issue because Webpack does not Uglify the code. But in prod I have this problem:
u {message: "Expected property "1" of type BigInteger, got n", __label: undefined, __property: 1, __value: n, __type: ƒ, …}message: "Expected property "1" of type BigInteger, got n"__label: undefined__property: 1__type: ƒ t(t)__value: n {0: 39560396, 1: 24254232, 2: 47726532, 3: 54351623, 4: 24134563, 5: 20729478, 6: 48965898, 7: 65576818, 8: 4252187, 9: 3018492, 10: 0, t: 10, s: 0}__valueTypeName: "n"stack: "Error: Expected property "1" of type BigInteger, got n↵ at d (http://localhost:8000/static/bundle/libs.js:13:92640)↵ at http://localhost:8000/static/bundle/libs.js:7:49765↵ at Array.every (<anonymous>)↵ at e (http://localhost:8000/static/bundle/libs.js:7:49707)↵ at i (http://localhost:8000/static/bundle/libs.js:7:48167)↵ at Object.i [as sign] (http://localhost:8000/static/bundle/libs.js:25:35134)↵ at n.sign (http://localhost:8000/static/bundle/libs.js:13:61402)↵ at http://localhost:8000/static/bundle/libs.js:25:55722↵ at Array.some (<anonymous>)↵ at d.sign (http://localhost:8000/static/bundle/libs.js:25:55590)"__proto__: Errorconstructor: ƒ f(e,t,r)__proto__: Object
(anonymous) @ main.js:1
Promise rejected (async)
value @ main.js:1
S @ libs.js:13
I know the error comes from bitcoinjs-lib
because happen when I use the TransactionBuilder.sign()
method.
Then, if I upgrade to 3.2.1 or above the problem of the code disappear. And I got this error when running Webpack/Uglify.
Output when using @3.1.1
:
> webpack --config=./webpack/production.js --optimize-minimize --progress --colors --display-error-details
Hash: f39c6260afc7aeb5b9fe
Version: webpack 3.4.1
Time: 43029ms
Asset Size Chunks Chunk Names
main.js 248 kB 0 [emitted] main
libs.js 578 kB 1 [emitted] [big] libs
[14] ./src/api/crypto.js 5.64 kB {0} [built]
[15] (webpack)/buildin/global.js 509 bytes {1} [built]
[19] ./src/api/numbers.js 1.71 kB {0} [built]
[23] ./src/api/Coins/ETH.js 6.13 kB {0} [built]
[119] multi ./src/index.js 28 bytes {0} [built]
[120] ./src/index.js + 88 modules 525 kB {0} [built]
[201] (webpack)/buildin/module.js 517 bytes {1} [built]
+ 273 hidden modules
All good. Output when using @3.2.1
or above:
> webpack --config=./webpack/production.js --optimize-minimize --progress --colors --display-error-details
Hash: cb0937ec69d6fb04ecff
Version: webpack 3.4.1
Time: 17002ms
Asset Size Chunks Chunk Names
main.js 248 kB 0 [emitted] main
libs.js 1.32 MB 1 [emitted] [big] libs
[14] ./src/api/crypto.js 5.64 kB {0} [built]
[15] (webpack)/buildin/global.js 509 bytes {1} [built]
[19] ./src/api/numbers.js 1.71 kB {0} [built]
[23] ./src/api/Coins/ETH.js 6.13 kB {0} [built]
[124] multi ./src/index.js 28 bytes {0} [built]
[125] ./src/index.js + 88 modules 525 kB {0} [built]
[202] (webpack)/buildin/module.js 517 bytes {1} [built]
+ 274 hidden modules
ERROR in libs.js from UglifyJs
Unexpected token: name (ALPHABET) [libs.js:32162,4]
ERROR in libs.js from UglifyJs
Unexpected token: name (ALPHABET) [libs.js:32162,4]
npm ERR! code ELIFECYCLE
npm ERR! errno 2
npm ERR! coinfy@1.0.0 build: `webpack --config=./webpack/production.js --optimize-minimize --progress --colors --display-error-details`
npm ERR! Exit status 2
npm ERR!
npm ERR! Failed at the coinfy@1.0.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/enzo/.npm/_logs/2017-12-11T16_28_14_841Z-debug.log
Notice that the size of libs.js change from 578 kB to 1.32 MB. I don’t know how to fix this so any help would be really really appreciated.
I have created a repository with the minimal configuration to reproduce the same errors: https://github.com/Josema/bitcoinjs-lib_error
Issue Analytics
- State:
- Created 6 years ago
- Comments:13 (5 by maintainers)
Wow, that fixed the issue!
For webpack users just add the options inside of plugins
UglifyEsPlugin
Thank you @afk11. Thank you all too.
Our workaround was just not uglifying some parts of the code: https://github.com/blocktrail/blocktrail-sdk-nodejs/blob/1c39759def25bc52910583e3dda40db3e10a1fd4/Gruntfile.js#L161