Open fluidsonic opened 5 years ago
I’m pretty sure this has to do with an architectural issue I discuss here and improvements I made in an attempt to make the corners less sharp. It has to do with executing worker scripts within different node realms. Are you able to reproduce it in a worker with just [] instanceof Array
in it?
From what I understand about Node now there is no way to fix this issue.
The Array
and Object
types that you pass to the context will become contextified.
Arrays created with []
and objects with {}
are not contextified.
Therefor using instanceof
with contextified types on non-contextified literals will never work.
Simple example:
require('vm').runInNewContext('[] instanceof Array',{Array:Array}) // false
For some reason
[] instanceof Array
isfalse
when a script is run within Cloudworker. That messes up our script :)No idea how that can happen but in plain Node and in a Cloudflare Worker it's working correctly.
Related: https://github.com/nodejs/node/issues/3425 Related: https://github.com/nodejs/node/issues/11593
I guess there isn't even a way around that when using Node's VM functionality. Cloudworker cannot reliably rebuild a Cloudflare Worker environment like that. As far as I know, Cloudflare Workers use v8 isolates instead.