The problem:
The polyfill plugin is incorrectly polyfilling the npm module qs.
The subtlety is noticed when passing a second parameter to the stringify function. Node's querystring.stringify function has a different signature from the npm module's function with the same name.
Node's second argument is a separator string, whereas qs expects an object. so building urls ends up with [Object object] in the returned string.
The fix:
Renaming polyfills/qs.js to polyfills/querystring.js seems to fix it. I'm not sure how much this affects the ecosystem at large, but qs has nearly 70M weekly downloads on npm.
The problem: The polyfill plugin is incorrectly polyfilling the npm module qs.
The subtlety is noticed when passing a second parameter to the stringify function. Node's
querystring.stringify
function has a different signature from the npm module's function with the same name.Node's second argument is a separator string, whereas
qs
expects an object. so building urls ends up with[Object object]
in the returned string.The fix: Renaming
polyfills/qs.js
topolyfills/querystring.js
seems to fix it. I'm not sure how much this affects the ecosystem at large, but qs has nearly 70M weekly downloads on npm.Repro: The error is reproducible with this repository https://github.com/larryosborn/rollup-plugin-polyfill-node-bug