如何在 Next.js 中生成 UUID?

7

我正在尝试这个

import { randomUUID } from 'crypto'
var id = randomUUID()

在我的NextJs应用程序中,但我遇到了这个错误:
index.js?46cb:369 Uncaught TypeError: (0,crypto__WEBPACK_IMPORTED_MODULE_5__.randomUUID)不是一个函数 在eval (index.js?bee7:8:20) 在Module../pages/index.js (index.js?ts=1649816623582:5680:1) 在模块选项工厂(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)
似乎crypto库可在NextJs的中间件中使用(虽然它应该在浏览器中可用), 但实现起来可能会比较复杂。有没有人能建议如何在NextJs中生成UUID?

使用外部库,例如 uuidshort-uuid,这样它可以被捆绑并发送到客户端。 - zenly
2个回答

15

由于 crypto 是 Node.js 内置模块,无法在客户端使用。因此,您可以使用外部库,如 uuidshort-uuid 来生成 UUID:

import { v4 } from "uuid";

v4(); // deadbeef-deadbeef-deadbeef-deadbeef or some uuid

使用外部跨平台库可以让你在服务器和客户端上同时使用,这将解决这个问题。


6

加密是Node模块内置的。你不能在客户端中使用它。 使用这个uuid

import { v4 as uuidv4 } from 'uuid';
uuidv4(); // ⇨ '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接