I have a simple file that imports a json:
main.ts
import json from './file.json'
However, deno throws the following error when importing a json file:
$ deno run main.ts
Compile file:///home/path/to/project/main.ts
error: Uncaught TypeError: Cannot resolve extension for "file:///home/path/file.json" with mediaType "Json".
at getExtension ($deno$/compiler.ts:218:13)
at new SourceFile ($deno$/compiler.ts:263:22)
at Function.addToCache ($deno$/compiler.ts:339:16)
at processImports ($deno$/compiler.ts:743:31)
at async processImports ($deno$/compiler.ts:753:7)
at async compile ($deno$/compiler.ts:1316:31)
at async tsCompilerOnMessage ($deno$/compiler.ts:1548:22)
at async workerMessageRecvCallback ($deno$/runtime_worker.ts:74:9)
The file path is correct and the file is a valid JSON. The Typescript compiler should allow this by default.
I also tried to explicitly enable resolveJsonModule
:
tsconfig.json
{
"compilerOptions": {
"resolveJsonModule": true
},
"include": [
"**/*"
]
}
and run it with the config but still get the same error:
$ deno run main.ts --config=tsconfig.json
Compile file:///home/path/to/project/main.ts
error: Uncaught TypeError: Cannot resolve extension for "file:///home/path/file.json" with mediaType "Json".
at getExtension ($deno$/compiler.ts:218:13)
at new SourceFile ($deno$/compiler.ts:263:22)
at Function.addToCache ($deno$/compiler.ts:339:16)
at processImports ($deno$/compiler.ts:743:31)
at async processImports ($deno$/compiler.ts:753:7)
at async compile ($deno$/compiler.ts:1316:31)
at async tsCompilerOnMessage ($deno$/compiler.ts:1548:22)
at async workerMessageRecvCallback ($deno$/runtime_worker.ts:74:9)
What's wrong here?
This module contains functions for working with JSON data. You can use it to process JSON that is embedded in other file formats. For example, you can query JSON that is stored as lines in a large text file by using json:parse-as-xml with the text:collection function.
json" assert { type: "json" }; console. log(json. hello); // Dynamic Import const { default: json } = await import("./test. json", { assert: { type: "json" } }); console.
Since Deno 1.17 JSON can now once again be imported in ESM. Import assertions must now be used:
import data from "./file.json" assert { type: "json" };
console.log(data);
For more info, see https://examples.deno.land/importing-json.
As per the following thread support for reading json files was removed just before shipping deno 1.0
https://github.com/denoland/deno/issues/5633
However, you can use the following syntax for reading a json file
Deno.readTextFile('./file.json').then(data => {
console.log(JSON.parse(data))
})
or
const data = JSON.parse(Deno.readTextFileSync('./file.json'));
Also, be sure to run the file containing above code with --allow-read
flag. Otherwise you will ge a permission denied error
deno run --allow-read index.ts
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With