diff options
-rw-r--r-- | src/bun.js/api/filesystem_router.zig | 3 | ||||
-rw-r--r-- | test/bun.js/filesystem_router.test.ts | 16 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/bun.js/api/filesystem_router.zig b/src/bun.js/api/filesystem_router.zig index f43a30d4e..c80a4ed07 100644 --- a/src/bun.js/api/filesystem_router.zig +++ b/src/bun.js/api/filesystem_router.zig @@ -320,7 +320,7 @@ pub const FileSystemRouter = struct { }; var router = Router.init(vm.bundler.fs, allocator, .{ - .dir = this.router.config.dir, + .dir = allocator.dupe(u8, this.router.config.dir) catch unreachable, .extensions = allocator.dupe(string, this.router.config.extensions) catch unreachable, .asset_prefix_path = this.router.config.asset_prefix_path, }) catch unreachable; @@ -338,6 +338,7 @@ pub const FileSystemRouter = struct { this.arena = arena; @This().routesSetCached(this_value, globalThis, JSC.JSValue.zero); this.allocator = allocator; + this.router = router; return this_value; } diff --git a/test/bun.js/filesystem_router.test.ts b/test/bun.js/filesystem_router.test.ts index 168543e41..a73e98c2d 100644 --- a/test/bun.js/filesystem_router.test.ts +++ b/test/bun.js/filesystem_router.test.ts @@ -349,6 +349,22 @@ it(".query works", () => { } }); +it("reload() works", () => { + // set up the test + const { dir } = make(["posts.tsx"]); + + const router = new Bun.FileSystemRouter({ + dir, + style: "nextjs", + assetPrefix: "/_next/static/", + origin: "https://nextjs.org", + }); + + expect(router.match("/posts").name).toBe("/posts"); + router.reload(); + expect(router.match("/posts").name).toBe("/posts"); +}); + it(".query works with dynamic routes, including params", () => { // set up the test const { dir } = make(["posts/[id].tsx"]); |