You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@thrift.apache.org by "Jens Geyer (Jira)" <ji...@apache.org> on 2026/09/14 22:04:00 UTC

[jira] [Resolved] (THRIFT-6203) Node.js library uses url.parse(), fs.exists() and require("constants"), all deprecated

     [ https://issues.apache.org/jira/browse/THRIFT-6203?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jens Geyer resolved THRIFT-6203.
--------------------------------
    Fix Version/s: 0.25.0
         Assignee: Sylwester Lachiewicz
       Resolution: Fixed

> Node.js library uses url.parse(), fs.exists() and require("constants"), all deprecated
> --------------------------------------------------------------------------------------
>
>                 Key: THRIFT-6203
>                 URL: https://issues.apache.org/jira/browse/THRIFT-6203
>             Project: Thrift
>          Issue Type: Improvement
>          Components: Node.js - Library
>            Reporter: Sylwester Lachiewicz
>            Assignee: Sylwester Lachiewicz
>            Priority: Major
>             Fix For: 0.25.0
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> The Node.js library calls three APIs that Node has deprecated, so an application embedding it prints deprecation warnings on every supported runtime.
> || API || Notice || Call site ||
> | {{url.parse()}} | DEP0169 | [lib/nodejs/lib/thrift/web_server.js|https://github.com/apache/thrift/blob/master/lib/nodejs/lib/thrift/web_server.js], in {{processPost}} and {{processGet}} |
> | {{fs.exists()}} | DEP0006 | [lib/nodejs/lib/thrift/web_server.js|https://github.com/apache/thrift/blob/master/lib/nodejs/lib/thrift/web_server.js] |
> | {{require("constants")}} | DEP0063 | [lib/nodejs/lib/thrift/server.js|https://github.com/apache/thrift/blob/master/lib/nodejs/lib/thrift/server.js], [lib/nodejs/lib/thrift/connection.js|https://github.com/apache/thrift/blob/master/lib/nodejs/lib/thrift/connection.js] |
> The replacements are the WHATWG {{URL}} class, {{fs.stat()}} and {{require("crypto").constants}}.
> Moving to the WHATWG parser changes one behaviour worth stating: {{url.parse()}} accepts a malformed request target and {{new URL()}} throws on one, so the server answers 400 where it previously carried on with a partly-parsed path.
> h3. Unset options.services
> Separately, {{createWebServer}} reads {{options.services}} without a default. A server configured to serve only static files has no reason to pass it, and the first POST then fails:
> {noformat}
> TypeError: Cannot read properties of undefined (reading '/')
> {noformat}
> The registration loop does not catch this, because {{for...in}} over {{undefined}} is a no-op rather than an error, so the misconfiguration only surfaces on a request rather than at construction.
> Submitted as [PR #3821|https://github.com/apache/thrift/pull/3821].



--
This message was sent by Atlassian Jira
(v8.20.10#820010)