Experimental JSON modules


目前导入 JSON 模块仅支持 commonjs 模式,并且使用 CJS 加载器加载。 WHATWG JSON 模块规范仍在标准化中,并且通过在运行 Node.js 时包含额外的标志 --experimental-json-modules 进行实验性地支持。

当包含 --experimental-json-modules 标志时,commonjsmodule 模式都使用新的实验性 JSON 加载器。 导入的 JSON 只暴露 default。 不支持命名导出。 在 CommonJS 缓存中创建缓存条目,以避免重复。 如果 JSON 模块已经从同一路径导入,则在 CommonJS 中返回相同的对象。

假设 index.mjs 具有

import packageConfig from './package.json';

模块需要 --experimental-json-modules 标志才有效。

node index.mjs # 失败
node --experimental-json-modules index.mjs # 有效

Currently importing JSON modules are only supported in the commonjs mode and are loaded using the CJS loader. WHATWG JSON modules specification are still being standardized, and are experimentally supported by including the additional flag --experimental-json-modules when running Node.js.

When the --experimental-json-modules flag is included, both the commonjs and module mode use the new experimental JSON loader. The imported JSON only exposes a default. There is no support for named exports. A cache entry is created in the CommonJS cache to avoid duplication. The same object is returned in CommonJS if the JSON module has already been imported from the same path.

Assuming an index.mjs with

import packageConfig from './package.json';

The --experimental-json-modules flag is needed for the module to work.

node index.mjs # fails
node --experimental-json-modules index.mjs # works