早些时候,我try 将这段代码从ruby编译为opalrb javascript.

require 'openssl'


cert = """-----BEGIN CERTIFICATE-----
MIIF0jCCBLqgAwIBAgIQE6uZ3+oqXXc/+5sp3TQd3zANBgkqhkiG9w0BAQsFADB1
MUQwQgYDVQQDDDtBcHBsZSBXb3JsZHdpZGUgRGV2ZWxvcGVyIFJlbGF0aW9ucyBD
ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTELMAkGA1UECwwCRzMxEzARBgNVBAoMCkFw
cGxlIEluYy4xCzAJBgNVBAYTAlVTMB4XDTIyMTIzMDE1MzIxOVoXDTI1MTIyOTE1
MzIxOFowga0xGjAYBgoJkiaJk/IsZAEBDApMSDI4WEE3VDIyMUAwPgYDVQQDDDdp
UGhvbmUgRGlzdHJpYnV0aW9uOiBTdW5zaGluZSBJbnN1cmFuY2UgR3JvdXAgQ28u
LCBMdGQuMRMwEQYDVQQLDApMSDI4WEE3VDIyMSswKQYDVQQKDCJTdW5zaGluZSBJ
bnN1cmFuY2UgR3JvdXAgQ28uLCBMdGQuMQswCQYDVQQGEwJDTjCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAKorSaxSoBNGkikg3M2brfrD4dpWga8oIVIv
L7oKGpvjjYCY2S6tuNIEZA0cdpTIcQ84j31RAoU6Y6xgyCpvb5c7I28hFVlM4ssR
fXQ0O/as8aF+TZvQMnDreLOndS6lKpeCitWDKt3cJS0bxjCUxY8A0e0sCNncQJht
UEcdNaFEVbrsIVD0zuS6ii+UEIBpv8EKdcUKsygFCM/Cc5MJ4QF9Ke+U3VHbgJ1Z
IhbUpTakj8ZgMD+Djvqkt4WDXU2Qc3aROg3VWNTTTV230efImd/jH6bWGMKv8XtG
gPwoTzPqFB50LRDg3ghsqH6esTcEWf2olDMJBerBo1NZ1Ec6i3kCAwEAAaOCAiMw
ggIfMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUCf7AFZD5r2QKkhK5JihjDJfs
p7IwcAYIKwYBBQUHAQEEZDBiMC0GCCsGAQUFBzAChiFodHRwOi8vY2VydHMuYXBw
bGUuY29tL3d3ZHJnMy5kZXIwMQYIKwYBBQUHMAGGJWh0dHA6Ly9vY3NwLmFwcGxl
LmNvbS9vY3NwMDMtd3dkcmczMDEwggEeBgNVHSAEggEVMIIBETCCAQ0GCSqGSIb3
Y2QFATCB/zCBwwYIKwYBBQUHAgIwgbYMgbNSZWxpYW5jZSBvbiB0aGlzIGNlcnRp
ZmljYXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRo
ZW4gYXBwbGljYWJsZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1
c2UsIGNlcnRpZmljYXRlIHBvbGljeSBhbmQgY2VydGlmaWNhdGlvbiBwcmFjdGlj
ZSBzdGF0ZW1lbnRzLjA3BggrBgEFBQcCARYraHR0cHM6Ly93d3cuYXBwbGUuY29t
L2NlcnRpZmljYXRlYXV0aG9yaXR5LzAWBgNVHSUBAf8EDDAKBggrBgEFBQcDAzAd
BgNVHQ4EFgQUofgyj62dk2i3I5Xb1b9h7etBc4EwDgYDVR0PAQH/BAQDAgeAMBMG
CiqGSIb3Y2QGAQQBAf8EAgUAMA0GCSqGSIb3DQEBCwUAA4IBAQCXbTgmDM+uppd9
FBdvc6F0pZV03kInxZr1EsiUizpcEYTIghkbw2JIZZ8DvOCdM/Fv4ypJ2SOu2BNr
xlWBG2JP6Yn8345V3PcfxABMWQUnj9x7EG68sNomJ4URlWD0cgKqz0IU7DsoW+ak
SIYeh2s5/GNzOMAYuUGEJB/ai/MXCNY24EhwYisKPUR8YKKjb+Wm02DTRkaYVZI8
kUUTu4lKLTlTB39OYkp+7B/x/QUkopgeRRL4wX5PcI42dolUq2LwcuJXYyN0k9Og
Wo6ByfM+3ae0UX8YMIhXphEe4QxEzmoROoys9QYm6YMg52XnjcAPEBZ1USeG/e4e
aboYVMIu
-----END CERTIFICATE-----"""

x509 = OpenSSL::X509::Certificate.new(cert)



puts x509.subject.to_s

错误{openssl:未初始化的常量openssl未定义}

有没有可能把ruby的openssl编译成javascript opalrb?

如果是,我该怎么做呢?

推荐答案

简短的回答是否定的.Opal和JRuby一样,不支持Ruby的C API.因此,一般来说,不可能为Opal编译Ruby的OpenSSL扩展.

不过,根据您的环境,可能会提供OpenSSL.特别是,Node.js支持以下模块:https://nodejs.org/api/tls.html.我不知道在Opal中有任何绑定到该模块,因此您必须编写自己的绑定.Opal允许您使用反引号操作符插入JavaScript代码,或者更好的是,您可以使用本地Opal stdlib库.

对于浏览器(或任何其他)环境,您可以将OpenSSL编译为WASM,然后使用Opal与其交互.但如果您想走这条路,也许Ruby WASM会被证明是更好的 Select .

Javascript相关问答推荐

如何制作删除按钮以从列表中删除该项目所属的项目?

如何从对象嵌套数组的第二级对象中过滤出键

成帧器运动中的运动组件为何以收件箱开始?

materialized - activeIndex返回-1

类型脚本中只有字符串或数字键而不是符号键的对象

如何在Connect 4游戏中 for each 玩家使用位板寻找7形状?

Chrome是否忽略WebAuthentication userVerification设置?""

分层树视图

如何在JavaScript文件中使用Json文件

在执行异步导入之前判断模块是否已导入()

使用POST请求时,Req.Body为空

确保函数签名中的类型安全:匹配值

VSCode中出现随机行

如何在Press上重新启动EXPO-AV视频?

将范围 Select 器添加到HighChart面积图

postman 预请求中的hmac/sha256内标识-从js示例转换

用于测试其方法和构造函数的导出/导入类

如何修复错误&语法错误:不能在纯react 项目中JEST引发的模块&之外使用导入语句?

MongoDB通过数字或字符串过滤列表

JSX/React -如何在组件props 中循环遍历数组