如何在 NextJs 中生成 UUID?

ekk*_*kis 7 javascript cryptojs reactjs webpack next.js

我正在尝试这个

import { randomUUID } from 'crypto'
var id = randomUUID()
Run Code Online (Sandbox Code Playgroud)

在我的 NextJs 应用程序中,但我收到此错误:

index.js?46cb:369 Uncaught TypeError: (0 , crypto__WEBPACK_IMPORTED_MODULE_5__.randomUUID) 不是 Module../pages/index.js (index.js?ts) 的 eval (index.js?bee7:8:20) 处的函数=1649816623582:5680:1) 在 Module.options.factory (webpack.js?ts=1649816623582:618:31) 在webpack_require (webpack.js?ts=1649816623582:37:33) 在 fn (webpack.js?ts= 1649816623582:287:21) 在 eval (?595a:5:16) 在 eval (route-loader.js?ea34:235:51)

看起来加密库可用于 NextJs 中的中间件(尽管它应该在浏览器中可用),但这似乎实现起来很复杂。谁能建议如何在 NextJs 中生成 UUID?

moc*_*cha 18

因为crypto它是 Node.js 中的内置模块,所以不能在客户端使用它。您可以使用外部库(例如uuid或 )short-uuid来生成 uuid:

import { v4 } from "uuid";

v4(); // deadbeef-deadbeef-deadbeef-deadbeef or some uuid
Run Code Online (Sandbox Code Playgroud)

使用外部跨平台库允许您在服务器和客户端上使用它,这将解决该问题。


小智 8

Crypto 是内置的 Node 模块。您不能在客户端使用它。\n使用此 uuid

\n
import { v4 as uuidv4 } from \'uuid\';\nuuidv4(); // \xe2\x87\xa8 \'9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d\n
Run Code Online (Sandbox Code Playgroud)\n