chenquincy / app-info-parser

A javascript parser for parsing .ipa or .apk files. IPA/APK文件 js 解析器

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

pecasha opened this issue · comments

通过判断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

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

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

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

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