Node.js crypto.randomBytes() 不是函数

Jak*_*son 7 javascript node.js node-crypto

由于某种原因,我调用的函数显然不是函数

Welcome to Node.js v14.15.1.
Type ".help" for more information.
> const crypto = require("crypto");
undefined
> x = crypto.randomBytes(32).toString("hex")
Uncaught TypeError: crypto.randomBytes is not a function
Run Code Online (Sandbox Code Playgroud)

randomBytes()的文档。

有什么我不明白的吗?

Cod*_*ife 1

似乎 getRandomBytes() 函数已被删除。我读了一些免责声明,认为它不是很安全。

https://www.npmjs.com/package/crypto中包含弃用消息,因此尽管/sf/answers/619932421/下的大多数赞成票对我来说似乎不再是最先进的。

在我可以简单地使用之前(像你一样,但在软件包更新后不再使用)

import crypto from "crypto";
const token = crypto.randomBytes(64).toString('hex');
Run Code Online (Sandbox Code Playgroud)

但加密货币现在只有 getRandomValues(),我认为它不是替代品。

仅回答 nr 3 也有很多但没有那么多的赞成票给了我一个工作版本/sf/answers/1798352811/。所以也许也可以尝试:

import { nanoid } from "nanoid";
const token = nanoid(64); //instead of crypto.randomBytes(64).toString('hex')
Run Code Online (Sandbox Code Playgroud)

如果它有效,请在那里留下赞成票,因为。