Skip to content
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

WAPI Injection throwing an error on recent update. Fix suggestion... #2308

Closed
sandro-salles opened this issue Jun 14, 2023 · 67 comments
Closed

Comments

@sandro-salles
Copy link

The code below is raising an error in recent update, preventing the code to inject the parasite and leading all Store dependencies to failures.

window[injectConfig.webpack] = window[injectConfig.webpack] || [];

Based on a recent code update in waconnect-team/wajs, instead of forcing the setting of chunk key on window object, we should first check if it exists and, if not, set as an empty array, as shown below:

wppconnect-team/wa-js@5339618

So the proposed fix would be to override that line with:

if (typeof window[injectConfig.webpack] === 'undefined') { window[injectConfig.webpack] = []; }

Already tested locally and it works.

@Carloslml
Copy link

I try this change, but no work, what is your version?

@sandro-salles
Copy link
Author

sandro-salles commented Jun 14, 2023

For me its working on:

  • Venom-Bot: 5.0.1
  • Node: v16.14.0
  • OS: Ubuntu 22.04
  • Browser: Chrome 114.0.5735.106
  • Puppeteer: ^20.7.1
  • Puppeteer Core: ^20.7.1

Create Config with:

headless: true,
puppeteerOptions: {
  ignoreDefaultArgs: ['--disable-extensions']
},

@leanmarro
Copy link

headless: true,
puppeteerOptions: {
ignoreDefaultArgs: ['--disable-extensions']
},
About that... Where did you add this setting?

@Carloslml
Copy link

headless: true, puppeteerOptions: { ignoreDefaultArgs: ['--disable-extensions'] }, Acerca de eso... ¿Dónde agregaste esta configuración?

When create a session:
image

@leanmarro
Copy link

headless: true, puppeteerOptions: { ignoreDefaultArgs: ['--disable-extensions'] }, Acerca de eso... ¿Dónde agregaste esta configuración?

When create a session: image

Did that work for you?

@Carloslml
Copy link

headless: true, puppeteerOptions: { ignoreDefaultArgs: ['--disable-extensions'] }, Acerca de eso... ¿Dónde agregaste esta configuración?

When create a session: image

Did that work for you?

No, i try with this settings, and show same error
image

@CarlosAurelioMRF
Copy link

The code below is raising an error in recent update, preventing the code to inject the parasite and leading all Store dependencies to failures.

window[injectConfig.webpack] = window[injectConfig.webpack] || [];

Based on a recent code update in waconnect-team/wajs, instead of forcing the setting of chunk key on window object, we should first check if it exists and, if not, set as an empty array, as shown below:

wppconnect-team/wa-js@5339618

So the proposed fix would be to override that line with:

if (typeof window[injectConfig.webpack] === 'undefined') { window[injectConfig.webpack] = []; }

Already tested locally and it works.

I was getting the error: Cannot read properties of undefined (reading 'createWid')

So, I've changed manually on node_modules put the code that you left and it's working!

@jackson-uti
Copy link

Can I make this change directly in wapi.js.map?

The code below is raising an error in recent update, preventing the code to inject the parasite and leading all Store dependencies to failures.

window[injectConfig.webpack] = window[injectConfig.webpack] || [];

Based on a recent code update in waconnect-team/wajs, instead of forcing the setting of chunk key on window object, we should first check if it exists and, if not, set as an empty array, as shown below:
wppconnect-team/wa-js@5339618
So the proposed fix would be to override that line with:
if (typeof window[injectConfig.webpack] === 'undefined') { window[injectConfig.webpack] = []; }
Already tested locally and it works.

I was getting the error: Cannot read properties of undefined (reading 'createWid')

So, I've changed manually on node_modules put the code that you left and it's working!

I found the line mentioned in node_modules/venom-bot/dist/lib/wapi.js.map changed it but it didn't work

@CarlosAurelioMRF
Copy link

changewapi.js instead of wapi.js.map

@Divino67
Copy link

Divino67 commented Jun 14, 2023

It's line 9313 from wapi.js my friend

@sandro-salles
Copy link
Author

Can I make this change directly in wapi.js.map?

The code below is raising an error in recent update, preventing the code to inject the parasite and leading all Store dependencies to failures.

window[injectConfig.webpack] = window[injectConfig.webpack] || [];

Based on a recent code update in waconnect-team/wajs, instead of forcing the setting of chunk key on window object, we should first check if it exists and, if not, set as an empty array, as shown below:
wppconnect-team/wa-js@5339618
So the proposed fix would be to override that line with:
if (typeof window[injectConfig.webpack] === 'undefined') { window[injectConfig.webpack] = []; }
Already tested locally and it works.

I was getting the error: Cannot read properties of undefined (reading 'createWid')
So, I've changed manually on node_modules put the code that you left and it's working!

I found the line mentioned in node_modules/venom-bot/dist/lib/wapi.js.map changed it but it didn't work

Check this module:
https://github.com/ds300/patch-package

You can patch external/third party modules in your own code with this (i use this when i have no time to submit pull requests or wait for them to be accepted)

@fernandopraise
Copy link

fernandopraise commented Jun 14, 2023

na linha 9313 tem esses codigo com while... esta correta essa linha para alteração do codigo?

no caminho node_modules/venom-bot/dist/lib/wapi.js

image

@fernandopraise
Copy link

continua a luta rs... aqui não sai disso...

image

@Carloslml
Copy link

na linha 9313 tem esses codigo com while... esta correta essa linha para alteração do codigo?

image

Only 9312, replace this line, but this code is generated by "npm install" and it generates the ./dist folder, change the code in src/lib/wapi and then run npm install, then look at this line and you should get the change

@Carloslml
Copy link

continua a luta rs... aqui não sai disso...

image

What version do you use?, see package.json i use "puppeteer": "^20.7.1",

@fernandopraise
Copy link

Também estou usando essa versão do puppeteer

@sandro-salles
Copy link
Author

continua a luta rs... aqui não sai disso...

image

Aparentemente conectou... qual é o erro exatamente @fernandopraise ?

@fernandopraise
Copy link

fica rodando esse Waiting for introduction e ao tentar enviar mensagem ... da o erro abaixo...

image

@sandro-salles
Copy link
Author

fica rodando esse Waiting for introduction e ao tentar enviar mensagem ... da o erro abaixo...

image

Consegue mandar um print de como ficou a sua alteração no arquivo do wapí, dentro do node_modules?

@CarlosAurelioMRF
Copy link

CarlosAurelioMRF commented Jun 14, 2023

na linha 9313 tem esses codigo com while... esta correta essa linha para alteração do codigo?

no caminho node_modules/venom-bot/dist/lib/wapi.js

image

você tem que alterar aquele arquivo e manter o mesmo padrão do arquivo compilado:

if (typeof window[_helper__WEBPACK_IMPORTED_MODULE_1__.injectConfig.webpack] === 'undefined') { window[_helper__WEBPACK_IMPORTED_MODULE_1__.injectConfig.webpack] = []; }

@fernandopraise
Copy link

ficou assim. o arquivo wapi.js

image

@sandro-salles
Copy link
Author

ficou assim. o arquivo wapi.js

image

Tá certinho então... como vc tá rodando seu projeto?

@fernandopraise
Copy link

image

@sandro-salles
Copy link
Author

image

Tá usando chrome ou chromium?

@fernandopraise
Copy link

por padrão é o Chromium certo?... não setei o chrome... acredito..

@CarlosAurelioMRF
Copy link

ficou assim. o arquivo wapi.js

image

A linha que você adicionou está errada, no arquivo compilado tem que colocar _helper__WEBPACK_IMPORTED_MODULE_1__ igual fiz no comentário ali de cima.

@TeuryBazzo
Copy link

Alguem tem uma correção dessa pra docker ?eu fiz o q falaram e funcionou, mas não queria alterar a node_modules

@fellipgomes
Copy link

Obrigado @CarlosAurelioMRF !!! Fiz o replace da linha com o código que você disponibilizou e funcionou !!!

@EdesNogueira
Copy link

galera, fiz o replace como todos fizeram, funcionou, mas depois de uns minutos tenho o erro:

erro

ele é aleatório, as vezes vem logo em segundos, as vezes demora minutos...Ajudem um iniciante desesperado :/

@GanaxXD
Copy link

GanaxXD commented Jun 24, 2023

#2308 (comment)
Caramba, funcionou real. Muito obrigado, pessoal.

@l3and49
Copy link

l3and49 commented Jun 27, 2023

Boa tarde, infelizmente meu bot estava funcionando a um tempo atrás e agora não está mais, e está dando a seguinte mensagem:
TimeoutError: waiting for function failed: timeout 30000ms exceeded
at new WaitTask (/home/bot/SorriBot/node_modules/puppeteer/lib/cjs/puppeteer/common/DOMWorld.js:680:34)
at DOMWorld.waitForFunction (/home/bot/SorriBot/node_modules/puppeteer/lib/cjs/puppeteer/common/DOMWorld.js:611:26)
at Frame.waitForFunction (/home/bot/SorriBot/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:1089:32)
at Page.waitForFunction (/home/bot/SorriBot/node_modules/puppeteer/lib/cjs/puppeteer/common/Page.js:2385:33)
at injectApi (/home/bot/SorriBot/node_modules/venom-bot/dist/controllers/browser.js:139:16)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async Object.create (/home/bot/SorriBot/node_modules/venom-bot/dist/controllers/initializer.js:297:9)
Porém não consigo ajeitar com as soluções dadas aqui pois não tenho o arquivo [/src/lib/wapi/wapi.js], apenas a [\src], alguém me ajuda por favor?

@leanmarro
Copy link

Boa tarde, infelizmente meu bot estava funcionando a um tempo atrás e agora não está mais, e está dando a seguinte mensagem: TimeoutError: waiting for function failed: timeout 30000ms exceeded at new WaitTask (/home/bot/SorriBot/node_modules/puppeteer/lib/cjs/puppeteer/common/DOMWorld.js:680:34) at DOMWorld.waitForFunction (/home/bot/SorriBot/node_modules/puppeteer/lib/cjs/puppeteer/common/DOMWorld.js:611:26) at Frame.waitForFunction (/home/bot/SorriBot/node_modules/puppeteer/lib/cjs/puppeteer/common/FrameManager.js:1089:32) at Page.waitForFunction (/home/bot/SorriBot/node_modules/puppeteer/lib/cjs/puppeteer/common/Page.js:2385:33) at injectApi (/home/bot/SorriBot/node_modules/venom-bot/dist/controllers/browser.js:139:16) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async Object.create (/home/bot/SorriBot/node_modules/venom-bot/dist/controllers/initializer.js:297:9) Porém não consigo ajeitar com as soluções dadas aqui pois não tenho o arquivo [/src/lib/wapi/wapi.js], apenas a [\src], alguém me ajuda por favor?

como assim man? na biblioteca do venom não tem o wapi? já tentou baixar de novo usando npm? qual a versão do teu venom?

@l3and49
Copy link

l3and49 commented Jun 27, 2023

Então, não consegui achar nenhum wapi, pra baixar de novo é npm install? Estou usando a versão 5.0.1

@leanmarro
Copy link

Então, não consegui achar nenhum wapi, pra baixar de novo é npm install? Estou usando a versão 5.0.1

isso, além disso... tenta a versão mais recente. Aplica as modificações sugeridas pelo pessoal no Wapi.js e no Browser.js e tenta novamente.

@l3and49
Copy link

l3and49 commented Jun 28, 2023

Então, não consegui achar nenhum wapi, pra baixar de novo é npm install? Estou usando a versão 5.0.1

isso, além disso... tenta a versão mais recente. Aplica as modificações sugeridas pelo pessoal no Wapi.js e no Browser.js e tenta novamente.

É que assim man, dando um contexto, é o bot do lugar onde trabalho e estava funcionando recentemente, até que parou e não estamos conseguindo arrumar por nada, eu achei o wapi.js pelo caminho node_modules/venom-bot/dist/lib/wapi/wapi.js porém tinha apenas uma linha de código enorme... copiei e colei o código que foi disponibilizado aqui com as mudanças necessárias, porém continua dando o mesmo erro

@leanmarro
Copy link

Então, não consegui achar nenhum wapi, pra baixar de novo é npm install? Estou usando a versão 5.0.1

isso, além disso... tenta a versão mais recente. Aplica as modificações sugeridas pelo pessoal no Wapi.js e no Browser.js e tenta novamente.

É que assim man, dando um contexto, é o bot do lugar onde trabalho e estava funcionando recentemente, até que parou e não estamos conseguindo arrumar por nada, eu achei o wapi.js pelo caminho node_modules/venom-bot/dist/lib/wapi/wapi.js porém tinha apenas uma linha de código enorme... copiei e colei o código que foi disponibilizado aqui com as mudanças necessárias, porém continua dando o mesmo erro

essa linha enorme tu pega e joga em um identador de código que vem "bonitinho"... em relação as modificações, essa de time out
vai no browser.js que fica no node_modules/venom-bot/dist/controllers/ e aplica essa alteração que um mano passou por ai
const sessionName = options.session || '';
const folderSession = path.join(path.resolve(process.cwd(), options.mkdirFolderToken, options.folderNameToken, sessionName));
// const folderSession = path.join(path.resolve(process.cwd(), options.mkdirFolderToken, options.folderNameToken, options.session));
lembra de atualizar para a última versão

@l3and49
Copy link

l3and49 commented Jun 28, 2023

Vou tentar aqui, valeu mano

@l3and49
Copy link

l3and49 commented Jun 28, 2023

Fui atualizar o venom-bot e deu erro de browser agora, não consegui achar onde deve ser colocada essa alteração, mas obrigado.

@leanmarro
Copy link

node_modules/venom-bot/dist/controllers/

node_modules/venom-bot/dist/controllers/browser.js
seguiu esse caminho aqui?
da um ctrl+f (pesquisa) e cola essa parte 'const folderSession = path.join' para achar a const e substitui por essa:

const sessionName = options.session || '';
const folderSession = path.join(path.resolve(process.cwd(), options.mkdirFolderToken, options.folderNameToken, sessionName));
// const folderSession = path.join(path.resolve(process.cwd(), options.mkdirFolderToken, options.folderNameToken, options.session));
faz isso ai, se não der certo, te mando o arquivo...

@otaviojulioneto
Copy link

@leanmarro
Fiz essas alterações que orientou, chegou a pedir para eu fazer a leitura do QR Code novamente, porém continuo com o mesmo erro de timeout.
image

Segue o print com as modificações, talvez senha substituído algo errado.
image

@leanmarro
Copy link

leanmarro commented Jun 29, 2023

@leanmarro Fiz essas alterações que orientou, chegou a pedir para eu fazer a leitura do QR Code novamente, porém continuo com o mesmo erro de timeout. image

Segue o print com as modificações, talvez senha substituído algo errado. image

substituiu errado aparentemente...
olha onde eu fiz a substituição:
image

se bem que não sei se foi o lugar errado no teu caso, tem que olhar a versão também do venom...

@l3and49
Copy link

l3and49 commented Jun 29, 2023

node_modules/venom-bot/dist/controllers/

node_modules/venom-bot/dist/controllers/browser.js seguiu esse caminho aqui? da um ctrl+f (pesquisa) e cola essa parte 'const folderSession = path.join' para achar a const e substituir por essa:

const nomedasessão = opções.sessão || ''; const folderSession = path.join(path.resolve(process.cwd(), options.mkdirFolderToken, options.folderNameToken, sessionName)); // const folderSession = path.join(path.resolve(process.cwd(), options.mkdirFolderToken, options.folderNameToken, options.session)); faz isso ai, se não der certo, te mando o arquivo...

Agora está dando o seguinte erro e mesmo depois de colocar o wapi.js no identor de código ainda não acho a linha que deve ser modificada...
print

@karein
Copy link

karein commented Jun 29, 2023

node_modules/venom-bot/dist/controllers/

node_modules/venom-bot/dist/controllers/browser.js seguiu esse caminho aqui? da um ctrl+f (pesquisa) e cola essa parte 'const folderSession = path.join' para achar a const e substituir por essa:
const nomedasessão = opções.sessão || ''; const folderSession = path.join(path.resolve(process.cwd(), options.mkdirFolderToken, options.folderNameToken, sessionName)); // const folderSession = path.join(path.resolve(process.cwd(), options.mkdirFolderToken, options.folderNameToken, options.session)); faz isso ai, se não der certo, te mando o arquivo...

Agora está dando o seguinte erro e mesmo depois de colocar o wapi.js no identor de código ainda não acho a linha que deve ser modificada... print

Qual versão você está usando?
tenta instalar as verões mais recentes, a ^5.0.6 com npm i venom-bot@latest ou a ^5.0.7 npm i venom-bot@^5.0.7
e se o venom estiver sendo criado com venom.create('sessionName') tenta criar com venom.create({ session: 'sessionName' })

@l3and49
Copy link

l3and49 commented Jun 29, 2023

Estava usando a 5.0.6, atualizei para a 5.0.7 porém continua com o mesmo erro, e estou criando da seguinte forma:
Print2

@karein
Copy link

karein commented Jun 29, 2023

Bem estranho,
eu criei um index.js, versão ^5.0.7 com o seu código e funcionou

Captura de tela 2023-06-29 152313

Seu browser está atualizado? #2326 (comment)

@l3and49
Copy link

l3and49 commented Jun 29, 2023

Bem estranho, eu criei um index.js, versão ^5.0.7 com o seu código e funcionou

Captura de tela 2023-06-29 152313

Seu browser está atualizado? Ou tentou fechar e abrir sua IDE (isso é meio besta mas, as vezes acontece ¯(o_o)/¯ )

Como faço para atualizar o browser? Não estou acostumado a programar assim

@karein
Copy link

karein commented Jun 29, 2023

Pelo Chrome mesmo chrome://settings/help
se estiver desatualizado vai aparecer a opção de atualizar

Captura de tela 2023-06-29 154357

@l3and49
Copy link

l3and49 commented Jun 29, 2023

Ah ta, sendo assim eles está sim. Já não sei mais o que tentar, mas muito obrigado pela ajuda.

@l3and49
Copy link

l3and49 commented Jun 29, 2023

Bem estranho, eu criei um index.js, versão ^5.0.7 com o seu código e funcionou
Captura de tela 2023-06-29 152313
Seu browser está atualizado? Ou tentou fechar e abrir sua IDE (isso é meio besta mas, as vezes acontece ¯(o_o)/¯ )

Como faço para atualizar o browser? Não estou acostumado a programar assim

Teria só como me mandar o arquivo browser.js e o initializer.js desse por favor? Acredito que esses que estão dando o problema.

@l3and49
Copy link

l3and49 commented Jun 29, 2023

Fui atualizar o venom bot de novo e acabou dando um erro a mais, I will cry...
print pn

@karein
Copy link

karein commented Jun 30, 2023

Bem estranho, eu criei um index.js, versão ^5.0.7 com o seu código e funcionou
Captura de tela 2023-06-29 152313
Seu browser está atualizado? Ou tentou fechar e abrir sua IDE (isso é meio besta mas, as vezes acontece ¯(o_o)/¯ )

Como faço para atualizar o browser? Não estou acostumado a programar assim

Teria só como me mandar o arquivo browser.js e o initializer.js desse por favor? Acredito que esses que estão dando o problema.

eu criei um repositório que tem a pasta venom do node modules e alguns exemplos de funções que funcionam quando executo https://github.com/karein/teste-venom.git

@otaviojulioneto
Copy link

@leanmarro Fiz essas alterações que orientou, chegou a pedir para eu fazer a leitura do QR Code novamente, porém continuo com o mesmo erro de timeout. image
Segue o print com as modificações, talvez senha substituído algo errado. image

substituiu errado aparentemente... olha onde eu fiz a substituição: image

se bem que não sei se foi o lugar errado no teu caso, tem que olhar a versão também do venom...

Consegui resolver o problema com um zip enviado no grupo do Telegram no qual reenviaram todos os arquivos com as correções feitas.
Agora o server está rodando normalmente na porta 4000, porém ele nao está enviando a mensagem no WhatsApp (Grupos do Telegram funcionam normalmente).
Uma OBS. essa configuração no server do zabbix do beezap não foi feita por mim, foi feita por um outro colaborador que está de férias.
Conferi as configurações nas Trigger actions, Media types e Media do usuário (contatos) do Zabbix e estão todos OK e criados.
Dentro dos arquivos default, tem algo que eu deva editar para conseguir ajustar isso? Talvez em algum ponto onde estou referenciando essas Triggers.
image
image
image

@otaviojulioneto
Copy link

Continuando a análise acima, tentei realizar um envio de test por dentro do zabbix no Media types e identifiquei este erro agoran os logs do pm2.
image

image

@otaviojulioneto
Copy link

Consegui resolver meu problema.

Executei os passos abaixo e também desabilitei algumas regras no iptables.

Obrigado a todos!

pm2 stop 0

rm -rf tokens

npm install venom-bot@5.0.6

nano beezap.js

Comentar isso

//venom.create().then((client) => start(client)).catch((error) => {
// console.error('Erro ao iniciar o cliente Venom:', error);
//});

E adicionar isso.

venom
.create({
session: 'API-ZAP-BEE' //name of session
})
.then((client) => start(client))
.catch((erro) => {
console.log(erro);
});

Leia o Qrcode novamente.

node beezap.js

ctrl + c

pm2 start 0 --name api-beezap
pm2 save

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests