crypto.randomuuid() 是 node.js ≥14.17 的首选方案,原生、安全、标准 v4,直接调用无需 require;错误写法 require('crypto').randomuuid() 会在 es module 下报 typeerror。

直接用 crypto.randomUUID() 最省事
VS Code 内置终端(Terminal)里跑 Node.js 时,只要 Node 版本 ≥ 14.17,crypto.randomUUID() 就是首选——它原生、安全、标准 v4,不依赖任何 npm 包。执行:
node -e "console.log(crypto.randomUUID())"就能输出形如
550e8400-e29b-41d4-a716-446655440000 的字符串。
注意:别写成 require('crypto').randomUUID()——这是旧写法,Node ≥ 14.17 后 crypto 是全局对象,直接调用即可。写错会报 TypeError: require is not a function(尤其在 ES Module 环境下)。
uuid npm 包适合多版本 UUID 场景
如果项目需要 v1(时间戳)、v3/v5(命名空间哈希)或兼容老 Node(uuid 包。安装后按需调用:
-
uuid.v4()→ 标准随机 v4 -
uuid.v1()→ 带时间戳和 MAC 的 v1(注意:可能暴露主机信息) -
uuid.v5('my-namespace', 'some-name')→ 确定性 ID,适合缓存键或幂等 ID
常见坑:uuid@9+ 默认导出是 ES Module,CommonJS 项目若用 require('uuid').v4 会失败,得改用 const { v4 } = require('uuid') 或升级为 import { v4 } from 'uuid'。
使用一条命令部署ProbeChain Rydberg测试网代理节点。自动注册为Agent(NodeType=1),免gas,支持macOS/Linux/Windows。触发词:/r
别用 Math.random() 拼 UUID
网上有些“一行生成 UUID”脚本本质是正则替换 xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,底层靠 Math.random()。这不符合 RFC 4122,也不加密安全——Math.random() 可预测、熵不足,v4 UUID 要求使用 CSPRNG(密码学安全伪随机数生成器),crypto.getRandomValues() 或 crypto.randomUUID() 才达标。
典型错误示例:
`${Date.now().toString(16)}-${Math.random().toString(16).substr(2, 10)}`→ 输出长度不对、版本位错误、无变体标识,根本不是合法 UUID。
VS Code 编辑器内生成 ≠ Node 环境生成
VS Code 自带的 Developer: Generate UUID 命令(快捷键 Ctrl+Shift+P → 输入该命令)生成的是标准 v4,但它**不经过 Node 运行时**,而是编辑器内部逻辑,结果一样但路径不同。如果你在写 Node 脚本、调试 process.argv 或测试 ID 生成逻辑,必须用终端里真实 Node 执行的结果,否则可能因环境差异(比如时钟精度、熵源)导致行为不一致。
插件如 UUID Generator 也大多走浏览器 API(crypto.randomUUID()),在 VS Code 内部渲染进程里跑——它快、方便,但不属于“Node 环境生成”,别把它和你在 .js 文件里 console.log(crypto.randomUUID()) 混为一谈。










