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
Farewell, Webpack! Re-injection, Pairing Code login, and 2.24x jumbofix #2816
base: main
Are you sure you want to change the base?
Conversation
Also, the "eval" function from inject.js file isn't running due to content security policy !! |
using nodejs v13 after apply new moduleraid on whatsapp web version Version 2.3000.1012111500 still got error (node:10784) UnhandledPromiseRejectionWarning: Error: Evaluation failed: TypeError: Cannot read properties of undefined (reading 'default') |
I believe that the issue is not in the pr itself but in the way moduleRaid is used and the way is finding modules, used within injected.js, because in many cases it assumes that the findModule method returns non empty array, maybe with old webpack this way it was feasible but now with comet this code needs some optimization I am not sure if the manipulation of these statements actually differs between node versions or between different modes, this need a lot of tests |
ModuleError: Requiring module "%s" with unresolved dependencies: %s Getting this error |
Please if you can print the full error so we can see in which file and in which line this error is occured |
Thank you. I'm using module raid and the code from inject.js |
maybe because i'm using backtick for this on module raid ? because without backtick it give error unexpected token '.' on nodejs v13 const isComet = |
Try to update your node version, as it seems that optional chaining is not supported in node older than node 14 |
can't do it. because the client still using windows 7. latest support can only using node v13 |
You must optimize code to use old javascript
So you must optimize this statement to use old javascript Try this:
|
I got this error
the error was caused by a change in the function so I change the
Tested Sending & Receive Message is ok. Update
|
i try remove that 2 line .default still error reading 'default' using node v13 and whatsapp web Version 2.3000.1012116664 (did your web version like mine ? i found that after 2.3000.xxxxx the number xxxxx keep increasing, maybe whatsapp keep updating or what ?) |
try following this change #2822
|
thx finally fix it. I miss the array [0] change to [1]. thx you very much |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
I have this error
|
Hello @PurpShell, I've been exploring the new solution you recommended and wanted to share some feedback based on my experience. While I appreciate the notable improvements in speed, there are a few issues that suggest it might not be ready for a full transition just yet:
I've invested a significant amount of time trying to integrate this new solution, but for now, I've had to revert to the older method using the old webVersionCache. It's unclear how long this will remain viable. I'm hopeful for future updates to this new solution, given its impressive speed. Looking forward to switching over once it achieves a more stable release. Thank you for your efforts in developing this, and I'm eager to see the upcoming improvements. |
Tested here and everything is working fine. There is only one issue here: When locking HTML version using And when it fails, don't throws any error... I think that by solving this part of webVersionCache, it's mature enough to merge to the main. Many users are reporting some errors. I haven't encountered any of these issues here. Running with Node.js |
I print out the status of the client status.
Then you will find the client is ready before the screen was fully loaded.
|
Locked the webversion to the latest version detected: 2.3000.1013440151-alpha and now it throws an error: Error: Evaluation failed: a
at ExecutionContext._ExecutionContext_evaluate (/Users/wemersonrv/desenvolvimento/projetos/winmidia/whatsapp-gateway/api/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js:229:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async ExecutionContext.evaluate (/Users/wemersonrv/desenvolvimento/projetos/winmidia/whatsapp-gateway/api/node_modules/puppeteer-core/lib/cjs/puppeteer/common/ExecutionContext.js:107:16)
at async Client.sendMessage (/Users/wemersonrv/desenvolvimento/projetos/winmidia/whatsapp-gateway/api/node_modules/whatsapp-web.js/src/Client.js:910:28) const msg = await client.sendMessage(to, media, { caption: 'teste-video' }) If disable the webcache, works fine! Edit 1: Send Video will throw the error... audio not! And both are sent normally without cache! Edit 2: Found that the issue when send audio/video with webCache activated is on the line 333 of 333 const mediaData = await mediaPrep.waitForPrep(); |
Yeah, here too. LOADING SCREEN 100 WhatsApp
LOADING SCREEN 100 WhatsApp
LOADING SCREEN 0 WhatsApp
LOADING SCREEN 99 WhatsApp
AUTHENTICATED
CLIENT IS READY
LOADING SCREEN 100 WhatsApp
LOADING SCREEN 100 WhatsApp But in my case it doesn't matter, because I don't use the |
I think the video sending issue may be the same as @guigo613 described in a issue #3002 and he fixed it somehow my modifiying the underlying html. |
QR regenerating after first scan |
I believe they are different. From what I could perceive, the files are extremely distinct from the most recent versions of WhatsApp. The issue in the version I modified was that the system was awaiting the Wasm file, although it had already been received, and the function had already concluded in a summarized manner. Therefore, it was awaiting something that had already been completed, and I'm unsure how this error arose there, but I suspected that the JS file might have been altered. If we were to force an error in this JS directly through the browser, WhatsApp would still send the video in the same manner, as it wouldn't get stuck. However, the video preview feature wouldn't be available. However, if an attempt to send it through the API were made, unfortunately, it would result in an error, and I believe it's due to the lack of handling when the resource is unavailable. The solution I found was to modify the JS so that it would receive the Wasm bytes and follow the correct methods. Since I suspected that this JS file wasn't the same as when it was functional and as it's not present in the current versions, and even the Wasm file seems to be different in current versions, I decided to add the Wasm bytes directly into the JS file itself, instead of fetching them, to ensure it's always the same file. I might be mistaken, but I don't believe it's the same issue with the web cache, although it seems similar. Below, I'll leave the link to the JS file that is fetched to perform video operations in the current versions and in the previous versions, where the problem I mentioned was. version 2.2x: https://web.whatsapp.com/WAWebMediaWasm.worker.57e3c8b84699c00f22bb.worker.js |
me too |
The library works perfectly with Chrome versions 116 ~ 122, after that it starts generating side effects. I recommend testing versions within this range. Solved my problems |
TL;DR:
WhatsApp released 2.3000x, a version that does not use Webpack anymore. We had to change the Store system to no longer use
moduleRaid
. Instability issues are caused by relying on selectors & DOM Observers for login, as well as increased performance issues. This prompted me to adopt the "New startup flow" that I mentioned here. This update is important. This update will boost reliability in WWebJS at least 400%. I also added pairing code login for those who needed it since I had the docs on hand (I reverse engineer then take notes, so I know what I know when I make them into PRs). It changes a lot in the authentication and launching. I advise you all to test your systems before deploying to production (even though this build should be prod-safe).You should immediately update to my version and cease using any other fork or version. Your system will work regardless if you are using a web cache, local cache, no cache.. LocalAuth, RemoteAuth, NoAuth... 2.24 and 2.3000.
TO INSTALL:
If you encounter a
git not found
error in the NPM/yarn install: Download git, https://git-scm.comThank you for your trust and time and thank you to my sponsors for their contribution.
PR Details
This PR adds support for Wwebjs past version 2.3000.x and 2.24..x. Send "F" in the chat for Webpack!
As always, very big thanks to my sponsors for their support! I am only able to do this thanks to them!
Also thanks to @allburov for his work on #2827, helped me a bit to know which modules are problematic.
This PR also adds re-injection in the case of navigation or refresh or intentional logout and pairing code login option.
It also changes a lot of the code in the startup flow.
To note:
await client.initialize()
returns it promise much earlier at the point of a new QR code (no login). The behavior is almost the same when logged in (it resolves the promise at AROUND ready).ORGANIZING
,INTIAL_LOAD
,DOWNLOADING
,...)This update will bring a lot of performance, time savings and increased reliability due to this refactor. We are not relying on constantly changing and dynamic HTML to get QR codes, to detect logins and this will make it much better. I also went out of my way and reversed all of the Pairing Code infra to get the only needed functions (3) and made them into this way so that we stop getting failed attempts like #2363
Description
Related Issue
closes #2789, closes #1787
Motivation and Context
After WhatsApp's update to 2.3000.x, moduleRaid no longer detected webpack (since they changed build systems)
After WhatsApp's update to 2.24xx.x, the manifest json no longer included the version, requiring a revamp for the cache system!
How Has This Been Tested
I tested this on many machines and concluded it is non-obtrusive. This will not break old versions and works with new ones
Types of changes
Checklist