- 
                Notifications
    
You must be signed in to change notification settings  - Fork 3.5k
 
Fix Electron renderer process compatability #22619
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
| // N.b. Electron.js environment is simultaneously a NODE-environment, but | ||
| // also a web environment. | ||
| var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string'; | ||
| var ENVIRONMENT_IS_NODE = typeof process == 'object' && typeof process.versions == 'object' && typeof process.versions.node == 'string' && process.type != 'renderer'; | 
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Does electron set process.versions.node?  It looks like the check for process.versions.node was added specifically to deal with electron.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was that always the case?
It seems that the processs.versions.node check here was explicitly added to distinguish between node and electron: e9971d1.
In any case it seems like you don't need both the process.versions.node check and the process.type check?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
https://www.electronjs.org/docs/latest/tutorial/electron-timelines
Electron v22.0.0 comes with Node.js as v16.17.
Electron v22.0.0 was released in 2022, while e9971d1 is for 2019.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The process comes from the contextBridge.exposeInMainWorld('process', process) in the preload script.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So its possible to expose the process module in some way.. but process.type will always be renderer?
In that case this LGTM, but can you drop the process.versions.node check?
Again I wish we had some kind of testing for electron in our CI :(
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In that case this LGTM, but can you drop the
process.versions.nodecheck?
Feels like it's possible, but not sure it'll work on a version that's too old.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actually I think we do still want the process.versions.node check, so that if process is defined by some other means its doesn't trigger this to be true.
| 
           Looks like this change replaces #17684  | 
    
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm.
You can rebaseline the codesize tests using test/runner other.*code_size* other.*codesize* --rebaseline
          
 OK  | 
    
| 
           Oh, I forget to say, its best to do   | 
    
| 
           Hi, I don't really understand the purpose of this PR, but at the moment, this little change   | 
    



https://www.electronjs.org/docs/latest/api/process#processtype-readonly