--experimental-default-type
flag to flip module defaultsThe new flag --experimental-default-type
can be used to flip the default
module system used by Node.js. Input that is already explicitly defined as ES
modules or CommonJS, such as by a package.json
"type"
field or .mjs
/.cjs
file extension or the --input-type
flag, is unaffected. What is currently
implicitly CommonJS would instead be interpreted as ES modules under
--experimental-default-type=module
:
String input provided via --eval
or STDIN, if --input-type
is unspecified.
Files ending in .js
or with no extension, if there is no package.json
file
present in the same folder or any parent folder.
Files ending in .js
or with no extension, if the nearest parent
package.json
field lacks a type
field; unless the folder is inside a
node_modules
folder.
In addition, extensionless files are interpreted as Wasm if
--experimental-wasm-modules
is passed and the file contains the "magic bytes"
Wasm header.
Contributed by Geoffrey Booth in #49869.
The new flag --experimental-detect-module
can be used to automatically run ES
modules when their syntax can be detected. For “ambiguous” files, which are
.js
or extensionless files with no package.json
with a type
field, Node.js
will parse the file to detect ES module syntax; if found, it will run the file
as an ES module, otherwise it will run the file as a CommonJS module. The same
applies to string input via --eval
or STDIN
.
We hope to make detection enabled by default in a future version of Node.js.
Detection increases startup time, so we encourage everyone—especially package
authors—to add a type
field to package.json
, even for the default
"type": "commonjs"
. The presence of a type
field, or explicit extensions
such as .mjs
or .cjs
, will opt out of detection.
Contributed by Geoffrey Booth in #50096.
flush
option in file system functionsWhen writing to files, it is possible that data is not immediately flushed to
permanent storage. This allows subsequent read operations to see stale data.
This PR adds a 'flush'
option to the fs.writeFile
family of functions which
forces the data to be flushed at the end of a successful write operation.
Contributed by Colin Ihrig in #50009 and #50095.
Adds a --experimental-websocket
flag that adds a WebSocket
global, as standardized by WHATWG.
Contributed by Matthew Aitken in #49830.
Previously repeated compilation of the same source code using vm.Script
stopped hitting the V8 compilation cache after v16.x when support for
importModuleDynamically
was added to vm.Script
, resulting in a performance
regression that blocked users (in particular Jest users) from upgrading from
v16.x.
The recent fixes allow the compilation cache to be hit again
for vm.Script
when --experimental-vm-modules
is not used even in the
presence of the importModuleDynamically
option, so that users affected by the
performance regression can now upgrade. Ongoing work is also being done to
enable compilation cache support for vm.CompileFunction
.
Contributed by Joyee Cheung in #49950 and #50137.
21453ae555
] - (SEMVER-MINOR) deps: update uvwasi to 0.0.19 (Node.js GitHub Bot) #49908ee65e44c31
] - esm: use import attributes instead of import assertions (Antoine du Hamel) #50140ffdc357167
] - (SEMVER-MINOR) stream: allow passing stream class to stream.compose
(Alex Yang) #501874861ad6431
] - stream: improve performance of readable stream reads (Raz Luvaton) #501734b27087b30
] - stream: optimize Writable (Robert Nagy) #50012709c6c0cab
] - (SEMVER-MINOR) test_runner, cli: add --test-concurrency flag (Colin Ihrig) #4999657efd5292c
] - (SEMVER-MINOR) vm: use import attributes instead of import assertions (Antoine du Hamel) #50141Updates may require up to 24 hours to propagate to mirrors. If the following command doesn't work, please retry later:
sudo dnf upgrade --refresh --advisory=FEDORA-2023-26c666581f
Please login to add feedback.
This update has been submitted for testing by sgallagh.
This update's test gating status has been changed to 'ignored'.
This update has been pushed to testing.
This update has been submitted for stable by bodhi.
This update has been pushed to stable.