类型错误:generateKeyPairSync不是一个函数。

3
我正在尝试使用node.js的crypto模块的generateKeyPairSync()函数。但是,我收到了一个类型错误,说没有这样的函数。
奇怪的是,同一模块的另一个函数createCipher()却完美地工作!

以下是示例代码:

import * as cryp from 'crypto';

export function generate_keys() {
  console.log('hey there!');
  const keyPair = cryp.generateKeyPairSync('rsa', {
    modulusLength: 4096,
    publicKeyEncoding: {
      type: 'spki',
      format: 'pem'
    },
    privateKeyEncoding: {
      type: 'pkcs8',
      format: 'pem',
      cipher: 'aes-256-cbc',
      passphrase: 'top secret'
    }
  });
  console.log(keyPair);
}


function encrypt(data: string) {
  let cipher = cryp.createCipher('aes-256-ecb', 'pass');
  cipher.update(data, 'utf8');
  return cipher.final('hex');
}


// This is working
console.log(encrypt('asa'));

// Getting error - 'generateKeyPairSync is not a function'
generate_keys();

这是完整的控制台输出:
[Running] ts-node "d:\projects\myProject\src\ply.ts"
4eb35bc94bd4d17fad4857b17558b2ad
hey there!

d:\projects\myProject\src\ply.ts:5
  const keyPair = cryp.generateKeyPairSync('rsa', {
                       ^
TypeError: cryp.generateKeyPairSync is not a function
    at generate_keys (d:\projects\myProject\src\ply.ts:5:24)
    at Object.<anonymous> (d:\projects\myProject\src\ply.ts:33:1)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Module.m._compile (C:\Users\anmolsingh.jaggi\AppData\Local\Yarn\Data\global\node_modules\ts-node\src\index.ts:439:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Object.require.extensions.(anonymous function) [as .ts] (C:\Users\anmolsingh.jaggi\AppData\Local\Yarn\Data\global\node_modules\ts-node\src\index.ts:442:12)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Function.Module.runMain (internal/modules/cjs/loader.js:742:12)

[Done] exited with code=1 in 2.097 seconds
1个回答

3

来自文档

添加于:v10.12.0

我猜您正在运行较早版本的Node。


哈哈..是的,我意识到了..必须更新节点版本。谢谢! - Anmol Singh Jaggi
9
@Tom Cumming:我已经升级了我的Node版本到12.4.0,但仍然出现相同的错误。 - Codebrekers

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