-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HttpConnection.buildRequestObject
includes non-http.request
fields, which breaks in recent node v20 nightly
#59
Comments
Since then, node core has effectively fixed this issue in nodejs/node#46989 If you now test with a node v20 nightly after that change, the tests pass:
I'll open a PR to do this. |
trentm
added a commit
that referenced
this issue
Mar 30, 2023
https://nodejs.org/api/http.html#httprequestoptions-callback Passing in the extra fields -- in particular 'href' and 'origin' -- makes node v20 believe the options object is a `URL` instance. For a brief period, this broke with some node v20 nightlies. Fixes: #59
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
🐛 Bug Report
When using the
HttpConnection
option with the ES client, and using the latest node.js v20 nightly, HTTP communication is broken.nodejs/node#46904 recently (first in v20.0.0-nightly2023030448f99e5f6a nightly Node.js build) introduced a change to the internal
isURL
function that is used byhttp.request()
andhttps.request()
to decide if the first argument is aURL
instance. The new test is if the object includeshref
andorigin
fields. If that is true, then Node'shttp.request()
takes this code path which results in other fields likeheaders
,agent
, etc. being ignored.HttpConnection.buildRequestObject
hits this issue:elastic-transport-js/src/connection/HttpConnection.ts
Lines 344 to 345 in 64d6fa2
(I've opened issue nodejs/node#46981 on Node.js to discuss the change, but either way, I think this transport should change to only pass documented
http.request()
options.)To Reproduce
Expected behavior
When run with the v20.0.0-nightly2023030448f99e5f6a node nightly, note that the custom headers from the ES client do not get through to the server:
But when run with earlier node.js versions, they do:
npm test
also fails with that node version.Your Environment
@elastic/elasticsearch
version: >=8.0.0The text was updated successfully, but these errors were encountered: