Remove V8 flag for import assertions, enabling support for the syntax; require the import assertion syntax for imports of JSON. Support import assertions in user loaders. Use both resolved module URL and import assertion type as the key for caching modules. Co-authored-by: Geoffrey Booth <webadmin@geoffreybooth.com> PR-URL: https://github.com/nodejs/node/pull/40250 Backport-PR-URL: https://github.com/nodejs/node/pull/41776 Reviewed-By: Bradley Farias <bradley.meck@gmail.com> Reviewed-By: Michaël Zasso <targos@protonmail.com> Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
29 lines
817 B
JavaScript
29 lines
817 B
JavaScript
// Flags: --experimental-json-modules
|
|
import '../common/index.mjs';
|
|
import { path } from '../common/fixtures.mjs';
|
|
import { strictEqual, ok } from 'assert';
|
|
import { spawn } from 'child_process';
|
|
|
|
import secret from '../fixtures/experimental.json' assert { type: 'json' };
|
|
|
|
strictEqual(secret.ofLife, 42);
|
|
|
|
// Test warning message
|
|
const child = spawn(process.execPath, [
|
|
'--experimental-json-modules',
|
|
path('/es-modules/json-modules.mjs'),
|
|
]);
|
|
|
|
let stderr = '';
|
|
child.stderr.setEncoding('utf8');
|
|
child.stderr.on('data', (data) => {
|
|
stderr += data;
|
|
});
|
|
child.on('close', (code, signal) => {
|
|
strictEqual(code, 0);
|
|
strictEqual(signal, null);
|
|
ok(stderr.toString().includes(
|
|
'ExperimentalWarning: Importing JSON modules is an experimental feature. ' +
|
|
'This feature could change at any time'
|
|
));
|
|
});
|