Fix for TypeError ERR_UNKNOWN_FILE_EXTENSION- Unknown file extension .json
September 26, 2021
Fix for TypeError ERR_UNKNOWN_FILE_EXTENSION: Unknown file extension .json:
If you try to import a JSON file in a NodeJS project, you might have faced this issue:
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json" for 'file.json'
Complete error log:
internal/process/esm_loader.js:74
internalBinding('errors').triggerUncaughtException(
^
TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json" for /Users/cvc/Documents/Development🌎🌎🌎/notes/writing/programs/npm/example.json
at Loader.defaultGetFormat [as _getFormat] (internal/modules/esm/get_format.js:65:15)
at Loader.getFormat (internal/modules/esm/loader.js:101:42)
at Loader.getModuleJob (internal/modules/esm/loader.js:230:31)
at async ModuleWrap.<anonymous> (internal/modules/esm/module_job.js:53:21)
at async Promise.all (index 0)
at async link (internal/modules/esm/module_job.js:58:9) {
code: 'ERR_UNKNOWN_FILE_EXTENSION'
}
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! npm@1.0.0 start: `node example.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the npm@1.0.0 start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! A complete log of this run can be found in:
npm ERR! /Users/cvc/.npm/_logs/2021-09-26T06_18_08_962Z-debug.log
Reason and solution:
Currently, JSON module import is experimental. Check here. It is supported only in commonjs mode.
But, you can use the flag —experimental-json-modules with node to fix this error.
If you add this flag, both commonjs and module mode works with .json file import.
"start": "node --experimental-json-modules example.js"
Example:
Named import is not supported for JSON imports. For example, if you have a example.js file with a example.json file in the same folder, you can import it as like below:
import e from './example.json';
console.log(e);
It will print the contents of the .json file.