mirror of
https://github.com/denoland/deno.git
synced 2025-08-03 10:33:54 +00:00
fix(ext/node): add missing _preloadModules hook (#18447)
This internal node hook is used by libraries such as `ts-node` when used as a require hook `node -r ts-node/register`. That combination is often used with test frameworks like `mocha` or `jasmine`. We had a reference to `Module._preloadModules` in our code, but the implementation was missing. While fixing this I also noticed that the `fakeParent` module that we create internally always threw because of the `pathDirname` check on the module id in the constructor of `Mdoule`. So this code path was probably broken for a while. ```txt ✖ ERROR: Error: Empty filepath. at pathDirname (ext:deno_node/01_require.js:245:11) at new Module (ext:deno_node/01_require.js:446:15) at Function.Module._resolveFilename (ext:deno_node/01_require.js:754:28) at Function.resolve (ext:deno_node/01_require.js:1015:19) ```
This commit is contained in:
parent
101abf3541
commit
8c051dbd1a
3 changed files with 40 additions and 5 deletions
14
cli/tests/unit_node/module_test.ts
Normal file
14
cli/tests/unit_node/module_test.ts
Normal file
|
@ -0,0 +1,14 @@
|
|||
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
|
||||
|
||||
import { Module } from "node:module";
|
||||
import { assertStrictEquals } from "../../../test_util/std/testing/asserts.ts";
|
||||
|
||||
Deno.test("[node/module _preloadModules] has internal require hook", () => {
|
||||
// Check if it's there
|
||||
// deno-lint-ignore no-explicit-any
|
||||
(Module as any)._preloadModules([
|
||||
"./cli/tests/unit_node/testdata/add_global_property.js",
|
||||
]);
|
||||
// deno-lint-ignore no-explicit-any
|
||||
assertStrictEquals((globalThis as any).foo, "Hello");
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue