Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Import '.json' extension in ES6 Node.js throws an error

We're trying to use the new ways of exporting and importing modules for ES6 with Node.js. It's important for us to get the version number from the package.json file. The following code should do that:

import {name, version} from '../../package.json' 

However, on execution the following error is thrown:

TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension ".json" for T:\ICP\package.json imported from T:\ICP\src\controllers\about.js 

Is there something we're missing?
Is the extension .json not supported?
Is there another way to retrieve this information using Node.js 13+?

like image 587
DarkLite1 Avatar asked Feb 13 '20 10:02

DarkLite1


People also ask

Does Nodejs 12 support ES6?

It's finally happened: nearly 4 years after the import keyword was introduced in ES6, Node. js introduced experimental support for ES6 imports and exports. In Node. js 12, you can use import and export in your project if you do both of the below items.


2 Answers

According to the Node.js ES Modules docs --experimental-json-modules. is required for importing JSON files.

Include the --experimental-json-modules flag for the module to work.

node --experimental-json-modules about.js 
like image 178
Idir Hamouch Avatar answered Sep 19 '22 09:09

Idir Hamouch


You can sill import require in an ES6 module for Node.js:

import { createRequire } from "module"; // Bring in the ability to create the 'require' method const require = createRequire(import.meta.url); // construct the require method const my_json_file = require("path/to/json/your-json-file.json") // use the require method 
like image 29
Carter Cobb Avatar answered Sep 22 '22 09:09

Carter Cobb