轶哥

妄图改变世界的全栈程序员。

Electron 12+ 出现 require is not defined 报错解决

在 Electron 12 及更高版本,设置了nodeIntegration: truenodeIntegrationInWorker: truenodeIntegrationInSubframes: true,渲染进程仍然可能出现require is not defined的报错。

这个报错还跟随有module is not definedexports is not defined

同样的报错在Electron 5+曾出现过,原因是发布v5.0.0的时候,官方将nodeIntegration默认值设置为了false(与此同时还将webviewTag设置为了false)。

近期,Electron 12.0.0 发布。修复了诸多异常。同时也将contextIsolation的默认值更改为true(详见:https://github.com/electron/electron/pull/27949)。

Node.js在VM环境使用ECMAScript modules

vm模块允许在V8虚拟机上下文中编译和运行代码。但是不是安全机制,如果有沙箱(sandbox)需求,可以考虑https://github.com/patriksimek/vm2

在VM环境中使用ECMAScript modules,即在VM环境中可以用import代替require引入某个模块,避免Cannot use import statement outside a module错误,也可以用export代替module.exports

我的使用场景:

通过Node.js在VM环境使用ECMAScript modules之目的,是为了构建一个虚拟环境(可控的上下文内容)动态执行一些代码,方便在复杂系统中构建小型脚本动态的快速验证一些想法。

https://github.com/yi-ge/api-proxy这个小项目中也有用到vm模块。

Google Authenticator 密钥导出到新iPhone

此文章提供的方法可以将Google Authenticator(安卓中显示为Google 身份验证器)中所有的密钥导出到其它的2FA双因素认证软件(例如Microsoft AuthenticatorStep TwoDuo MobileAuthy等二次验证APP),甚至从Android版本的Google Authenticator导入到IOS版本的Google Authenticator(例如将华为手机里面的身份验证数据导入到IPhone,两个手机可以同时使用)。

研究迁移方法的原因是,Android版本的Google Authenticator右上角提供了迁移账号功能,而在IPhone中无法导入从Android中迁移出来的账号(估计是IOS版本年久失修)。我的密码数量很多,挨个到原始账号设置的地方重置二次验证数据不太现实。

CryptoJS PBKDF2 AES对称加密

CryptoJS提供了和OpenSSL加密命令一致的AES对称加密方法,此方法基于EvpKDFSecret Passphrase 进行计算(This key derivation function is meant to conform with EVP_BytesToKey.),确保进行AES加密计算的key符合长度标准并提升AES加密的安全性。CryptoJS没有直接提供基于PBKDF2的AES加密方法,但在OpenSSL中提供了-pbkdf2参数并将该参数作为AES加密的推荐选项。

  上一页 下一页