VRCX icon indicating copy to clipboard operation
VRCX copied to clipboard

White Screen with SharedVariable is not defined error

Open orels1 opened this issue 3 years ago • 7 comments

After VRC servers had issues one day (and most apps losing auth) - my VRCX got in a very odd state I am so far unable to recover from.

I tried removing everything that seemed related from all the AppData folders and generally by searching the whole drive for VRCX and CEF, but so far - no luck.

I booted up a dev build with sourcemaps and it spewed this error when debugging the JS side of it image

I tried digging around a bit on the CEF docs, and seems like all of the BindObjectAync stuff should get bound into the window scope, but so far everything but these two is getting bound.

image

After I changed their binding call to isAsync = true in the Utils.cs - it made them bound. But because they're async - the JSON.parse(configRepository.getString('savedCredentials')) is now throwing because it doesnt expect to get a promise. I didn't try replacing all of the config repository calls with an await but I might just do that to see if it boots up

Hope that provides enough context to figure out what the actual issue is. I'll keep digging on my own for now

orels1 avatar Feb 27 '21 23:02 orels1

VRCX config is all self contained in the executable folder, delete VRCX.sqlite3 and VRCX.json these files contain all the programs data and config. Or just re download release zip.

Natsumi-sama avatar Feb 27 '21 23:02 Natsumi-sama

Update

After changing bindings to be isAsync = true image

I went and made all the calls to the configRepository use async including the parent functions. And that "fixed it", as in I was able to load the login screen.

Afterwards I tried reverting it to see if it was just something with my config - but still got a crash. So for now I guess i'm going to be running this fully asynced version. Thankfully vue methods sorta work ok with async out of the box, so I didn't need to add any awaits to the things that call any $app.method.<methodName> bound methods.

If you're interested in what I've done - here's my fork: https://github.com/orels1/VRCX/commit/2f6c89dcb614401a8bfcae37f08ccfc8a4332695

orels1 avatar Feb 27 '21 23:02 orels1

VRCX config is all self contained in the executable folder, delete VRCX.sqlite3 and VRCX.json these files contain all the programs data and config. Or just re download release zip.

I tried that - nothing helped. I even built a dev build in a totally different folder - and it still had the same errors

orels1 avatar Feb 27 '21 23:02 orels1

I know that .NET Core and .NET 5.0 do not have the needed WCF methods anymore for the old sync CEF bindings to work. Can it be that some windows update broke it or I just lack some older .NET?

orels1 avatar Feb 27 '21 23:02 orels1

Interesting... can you give building my fork a try? https://github.com/Natsumi-sama/VRCX hmmm if it were .NET related I would assume it wouldn't open but I could be wrong this is outside my expertise.

Natsumi-sama avatar Feb 27 '21 23:02 Natsumi-sama

Interesting... can you give building my fork a try? https://github.com/Natsumi-sama/VRCX hmmm if it were .NET related I would assume it wouldn't open but I could be wrong this is outside my expertise.

Same issue with yours, I'm afraid :(

CEF itself supports new .NET, but based on the docs - the new .NET doesn't have WCF. And it doesnt seem like I can downgrade my .NET anymore, installing a 4.6.2 runtime throws a "you have a newer version" error.

I tried listing my devtools and runtimes, and it seems like I do not have any 4.x runtimes

image

And based on the MS Docs, the .NET 4.x is not even in the supported list anymore?

This is a fresh Windows 20H2 install.

orels1 avatar Feb 27 '21 23:02 orels1

For now I guess I can spend some time translating all of VRCXStorage and SharedVariable calls to async, there is quite a bit of stuff, but I think its doable

orels1 avatar Feb 28 '21 01:02 orels1