node:process 和 process 有什么区别?

What's the difference between node:process and process?

当我导入 node:process 时它工作正常。但是,当我尝试要求相同时,它会出错。

这很好用:

import process from 'node:process';

但是当我尝试要求相同时,它会抛出一个错误:

const process = require('node:process');

Error: Cannot find module 'node:process'

我很好奇 processnode:process.

之间的区别是什么,它在 commonjs 和模块中都有效

此外,我正在使用 webpack 来捆绑我的 js,当我尝试 运行 我的捆绑代码并意识到 chalk 导入 node:processnode:osnode:tty。我现在该如何解决?

“node:”是一个用于加载 ECMAScript 模块的 URL 方案。因此它开始是为了“导入”,而不是“要求”。

"node:process" 只是加载 built-in“进程”模块的替代名称。

另请参阅 Node.js documentation - 您可以在“历史”标签 (12.20.0, 14.13.1)

中找到支持的最低 Node.js 版本

对于较新的 Node.js,它也应该适用于“require”(14.18.0、16.0.0)。

可以找到更多详细信息 here:node:process 总是喜欢 built-in 核心模块,而进程 可以 从文件。

import process from 'node:process';import process from 'process'; 是等价的。

node:import 的版本 12 开始存在。

node: URLs are supported as an alternative means to load Node.js builtin modules. This URL scheme allows for builtin modules to be referenced by valid absolute URL strings.

node: 背后的想法是明确它实际上是一个构建模块,而不是安装的模块,并避免名称冲突,与第 3 方模块。

node: 协议最初仅为 import 添加,因此特定节点版本可能支持 node:import,但不支持 require

在 v16.13.0(不确定从哪个 v16 版本开始)中,您也可以将它与 require 一起使用。自 v14.18 以来也被反向移植到 v14:module: add support for node:‑prefixed require(…) calls