diff --git a/llrt_core/src/vm.rs b/llrt_core/src/vm.rs index 901baba436..7389601ea5 100644 --- a/llrt_core/src/vm.rs +++ b/llrt_core/src/vm.rs @@ -605,6 +605,11 @@ fn init(ctx: &Ctx<'_>, module_names: HashSet<&'static str>) -> Result<()> { join_path(vec![import_directory, specifier]) }; + if import_name.ends_with(".json") { + let source = std::fs::read_to_string(import_name)?; + return json_parse(&ctx, source); + } + let mut map = require_in_progress.lock().unwrap(); if let Some(obj) = map.get(&import_name) { return Ok(obj.clone().into_value()); diff --git a/tests/unit/require.test.ts b/tests/unit/require.test.ts index 8d4e2e2560..3002f98c9d 100644 --- a/tests/unit/require.test.ts +++ b/tests/unit/require.test.ts @@ -48,3 +48,9 @@ it("should be able to use node module with prefix `node:` with require", () => { consoleObj.error("error"); consoleObj.trace("trace"); }); + +it("should require json", () => { + const a = _require(`${CWD}/package.json`); + + expect(a.private).toEqual(true); +});