diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts index b24bf6a8e4..1a96af2a26 100644 --- a/ext/node/polyfills/process.ts +++ b/ext/node/polyfills/process.ts @@ -668,14 +668,9 @@ class Process extends EventEmitter { execPath = path; } - setStartTime(t: number) { - this.#startTime = t; - } - - #startTime = 0; /** https://nodejs.org/api/process.html#processuptime */ uptime() { - return (Date.now() - this.#startTime) / 1000; + return Number((performance.now() / 1000).toFixed(9)); } #allowedFlags = buildAllowedFlags(); @@ -887,16 +882,12 @@ internals.__bootstrapNodeProcess = function ( ); } - process.setStartTime(Date.now()); - arch = arch_(); platform = isWindows ? "win32" : Deno.build.os; pid = Deno.pid; initializeDebugEnv(nodeDebug); - // @ts-ignore Remove setStartTime and #startTime is not modifiable - delete process.setStartTime; delete internals.__bootstrapNodeProcess; } else { // Warmup, assuming stdin/stdout/stderr are all terminals diff --git a/tests/unit_node/process_test.ts b/tests/unit_node/process_test.ts index b92be2f3ca..15ad052bfc 100644 --- a/tests/unit_node/process_test.ts +++ b/tests/unit_node/process_test.ts @@ -1083,3 +1083,12 @@ Deno.test({ process.setSourceMapsEnabled(true); // noop }, }); + +// Regression test for https://github.com/denoland/deno/issues/23761 +Deno.test({ + name: "process.uptime without this", + fn() { + const v = (0, process.uptime)(); + assert(v >= 0); + }, +});