diff options
author | Nikolai Vavilov <vvnicholas@gmail.com> | 2020-03-19 16:42:07 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-19 10:42:07 -0400 |
commit | 8c1c929034d46101b6a51ec5cf5e2f307ed0c271 (patch) | |
tree | e86383fb34829d991121fc3203595d7e77327779 /std/node | |
parent | 74c37e759ac03267975309c1425223289ebc925f (diff) |
fix: stack traces for modules imported via std/node's require (#4035)
Diffstat (limited to 'std/node')
-rw-r--r-- | std/node/module.ts | 4 | ||||
-rw-r--r-- | std/node/module_test.ts | 11 | ||||
-rw-r--r-- | std/node/tests/cjs/cjs_throw.js | 5 |
3 files changed, 17 insertions, 3 deletions
diff --git a/std/node/module.ts b/std/node/module.ts index 01f1f0477..21992f743 100644 --- a/std/node/module.ts +++ b/std/node/module.ts @@ -1045,11 +1045,11 @@ type RequireWrapper = ( __dirname: string ) => void; -function wrapSafe(filename_: string, content: string): RequireWrapper { +function wrapSafe(filename: string, content: string): RequireWrapper { // TODO: fix this const wrapper = Module.wrap(content); // @ts-ignore - const [f, err] = Deno.core.evalContext(wrapper); + const [f, err] = Deno.core.evalContext(wrapper, filename); if (err) { throw err; } diff --git a/std/node/module_test.ts b/std/node/module_test.ts index 6de5bd66e..be36a8b6d 100644 --- a/std/node/module_test.ts +++ b/std/node/module_test.ts @@ -1,5 +1,5 @@ const { test } = Deno; -import { assertEquals, assert } from "../testing/asserts.ts"; +import { assertEquals, assert, assertStrContains } from "../testing/asserts.ts"; import { createRequire } from "./module.ts"; // TS compiler would try to resolve if function named "require" @@ -48,3 +48,12 @@ test(function requireNodeOs() { assert(os.arch); assert(typeof os.arch() == "string"); }); + +test(function requireStack() { + const { hello } = require_("./tests/cjs/cjs_throw"); + try { + hello(); + } catch (e) { + assertStrContains(e.stack, "/tests/cjs/cjs_throw.js"); + } +}); diff --git a/std/node/tests/cjs/cjs_throw.js b/std/node/tests/cjs/cjs_throw.js new file mode 100644 index 000000000..a636f406b --- /dev/null +++ b/std/node/tests/cjs/cjs_throw.js @@ -0,0 +1,5 @@ +function hello() { + throw new Error("bye"); +} + +module.exports = { hello }; |