diff --git a/lib/node/NodeTargetPlugin.js b/lib/node/NodeTargetPlugin.js index 231c8973ed7..fb12b2fb550 100644 --- a/lib/node/NodeTargetPlugin.js +++ b/lib/node/NodeTargetPlugin.js @@ -55,6 +55,7 @@ const builtins = [ "wasi", "worker_threads", "zlib", + /^node:/, // cspell:word pnpapi // Yarn PnP adds pnpapi as "builtin" diff --git a/test/ConfigTestCases.template.js b/test/ConfigTestCases.template.js index 41d94c16aa6..79d7e79319a 100644 --- a/test/ConfigTestCases.template.js +++ b/test/ConfigTestCases.template.js @@ -413,7 +413,11 @@ const describeCases = config => { module in testConfig.modules ) { return testConfig.modules[module]; - } else return require(module); + } else { + return require(module.startsWith("node:") + ? module.slice(5) + : module); + } }; results.push( diff --git a/test/configCases/node/node-prefix/index.js b/test/configCases/node/node-prefix/index.js new file mode 100644 index 00000000000..84aa3bd98fd --- /dev/null +++ b/test/configCases/node/node-prefix/index.js @@ -0,0 +1,8 @@ +import vm1 from "vm"; +import vm2 from "node:vm"; + +it("should allow importing node builtin modules with the node: prefix", () => { + expect(require("node:fs")).toBe(require("fs")); + expect(require("node:path")).toBe(require("path")); + expect(vm2).toBe(vm1); +}); diff --git a/test/configCases/node/node-prefix/webpack.config.js b/test/configCases/node/node-prefix/webpack.config.js new file mode 100644 index 00000000000..029181fbeba --- /dev/null +++ b/test/configCases/node/node-prefix/webpack.config.js @@ -0,0 +1,4 @@ +/** @type {import("../../../../").Configuration} */ +module.exports = { + target: "node" +};