diff --git a/std/node/module.ts b/std/node/module.ts index f10fc2ca74fb6b..a7052668ae4f69 100644 --- a/std/node/module.ts +++ b/std/node/module.ts @@ -764,16 +764,7 @@ function tryFile(requestPath: string, _isMain: boolean): string | false { } function toRealPath(requestPath: string): string { - // Deno does not have realpath implemented yet. - let fullPath = requestPath; - while (true) { - try { - fullPath = Deno.readLinkSync(fullPath); - } catch { - break; - } - } - return path.resolve(requestPath); + return Deno.realPathSync(requestPath); } // Given a path, check if the file exists with any of the set extensions diff --git a/std/node/module_test.ts b/std/node/module_test.ts index 2faaff57505d5d..86fb1d386680d1 100644 --- a/std/node/module_test.ts +++ b/std/node/module_test.ts @@ -69,3 +69,8 @@ Deno.test("requireStack", function () { assertStringIncludes(e.stack, "/tests/cjs/cjs_throw.js"); } }); + +Deno.test("requireFileInSymlinkDir", () => { + const { C } = require("./tests/cjs/dir"); + assertEquals(C, "C"); +}); diff --git a/std/node/tests/cjs/dir b/std/node/tests/cjs/dir new file mode 120000 index 00000000000000..abec30059cadb0 --- /dev/null +++ b/std/node/tests/cjs/dir @@ -0,0 +1 @@ +./subdir/dir \ No newline at end of file diff --git a/std/node/tests/cjs/subdir/dir/index.js b/std/node/tests/cjs/subdir/dir/index.js new file mode 100644 index 00000000000000..0b4d1138683056 --- /dev/null +++ b/std/node/tests/cjs/subdir/dir/index.js @@ -0,0 +1,4 @@ +// deno-lint-ignore-file no-undef +const C = require("../cjs_c"); + +module.exports = { C };