chenquincy / app-info-parser

A javascript parser for parsing .ipa or .apk files. IPA/APK文件 js 解析器
MIT License
492 stars 116 forks source link

目前区分运行环境的方式有点问题 #94

Closed pecasha closed 1 year ago

pecasha commented 1 year ago

通过判断windowdocument对象是否存在来确定当前是browser还是nodejs环境,在有些场景中不合理,因为像electron是browser+nodejs的,这样还是会被判断成是browser。 我觉得可以改为通过判断process对象,如果process对象存在则是nodejs,否则就是browser。 因为browser环境不存在process,但是像electron的browser+nodejs还是会存在windowdocuemnt的。

typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]' // nodejs
typeof process === 'undefined' || Object.prototype.toString.call(process) !== '[object process]' // browser
chenquincy commented 1 year ago

仅仅通过 process 判断还是不太稳妥,如果用户声明了一个 window.process 的对象变量,这个判断就会有问题了。

chenquincy commented 1 year ago

并且判断 node 环境一般通过 global 做判断,用 process 的比较少,可以在原有的基础上再加上 global 是否存在的判断

pecasha commented 1 year ago

仅仅通过 process 判断还是不太稳妥,如果用户声明了一个 window.process 的对象变量,这个判断就会有问题了。

所以还额外判断了process的原型类型,如果是用户创建的window.process对象,它的原型会是[object Object],除非刻意的修改了原型类型