Cuando importo node:process
funciona bien. Sin embargo, cuando trato de requerir lo mismo, da un error.
Esto funciona bien:
import process from 'node:process';
Pero cuando trato de requerir lo mismo, arroja un error:
const process = require('node:process');
Error: Cannot find module 'node:process'
Tengo curiosidad por saber cuál es la diferencia entre process
, que funciona tanto en commonjs como en module, vs node:process
.
Además, un seguimiento, estoy usando webpack para empaquetar mi js, y descubrí este error cuando traté de ejecutar mi código empaquetado y me di cuenta de que la chalk
importa node:process
, node:os
y node:tty
. ¿Cómo soluciono eso ahora?
import process from 'node:process';
e import process from 'process';
son equivalentes.
El node:
existe desde la versión 12 para import
.
node:
las URL se admiten como un medio alternativo para cargar los módulos integrados de Node.js. Este esquema de URL permite que los módulos integrados sean referenciados por cadenas de URL absolutas válidas.
La idea detrás de node:
es dejar en claro que en realidad es un módulo incorporado y no uno instalado y evitar conflictos de nombres con módulos de terceros.
El protocolo node:
se agregó primero solo para import
, por lo que una versión de nodo en particular podría admitir node:
con import
pero no con require
.
En v16.13.0 (no estoy seguro desde qué versión v16) también puede usarlo con require
. Y también se retroportó a la versión 14 desde la versión 14.18: módulo: agregar soporte para llamadas de nodo: con prefijo require(…)
"nodo:" es un esquema de URL para cargar módulos ECMAScript. Como tal, comenzó por "importar", no "requerir".
"nodo: proceso" es solo un nombre alternativo para cargar el módulo de "proceso" incorporado.
Consulte también la documentación de Node.js : puede encontrar la versión compatible más baja de Node.js dentro de la etiqueta "Historial" (12.20.0, 14.13.1)
Con Node.js más nuevo, también debería estar disponible para "requerir" (14.18.0, 16.0.0).
Se pueden encontrar más detalles aquí : node:process siempre prefiere el módulo central incorporado, mientras que el proceso se puede cargar desde un archivo.