【发布时间】:2021-10-13 07:55:39
【问题描述】:
我正在尝试使用 @peculiar/x509 库来解码 CSR,以便在我的测试中使用一些信息。测试使用的是 Cypress。
这是我的代码摘录:
import * as x509 from '@peculiar/x509';
const request = {
certificateSigningRequest: `-----BEGIN CERTIFICATE REQUEST-----
...
-----END CERTIFICATE REQUEST-----`,
};
describe('PKI', () => {
it('works', () => {
console.log(x509);
const stringPEM = request.certificateSigningRequest
.replace(/(-----(BEGIN|END) CERTIFICATE REQUEST-----|\n)/g, "");
const cert = new x509.X509Certificate(stringPEM);
console.log(cert.subject);
return;
// Stuff I want to test
});
});
当我尝试记录 x509 变量时,它返回一个空对象。
在const cert = new x509.X509Certificate(stringPEM); 行,我得到一个错误:
x509.X509Certificate is not a constructor.
如果我尝试使用 Typescript 文件设置一个简单的项目来导入库并只记录 x509 变量,它会正确显示所有导出。
我不明白为什么赛普拉斯会出现这种情况,因此感谢您提供任何帮助。
编辑:深入了解赛普拉斯的工作原理,我现在明白我对在 Node 进程中运行/控制的规范文件的假设是错误的。规范文件正在浏览器中运行。所以我需要在规范文件中注入库的浏览器版本。 这可以通过 Cypress 的插件 API 完成,因为它运行在 Cypress 节点进程中。
【问题讨论】:
-
可能是 nodejs 版本问题。 @peculiar/x509 需要 14.x、15.x
-
我的 NodeJS 版本是 14.x
标签: automation automated-tests cypress