VSCODE: No debug adapter, can not send 'variables'"

Viewed 63593

I'm getting started with pupeteer and node and using vscode in win 10. I'm trying to log into a site and scrape a table. So far I have:

(async () => {

const browser = await puppeteer.launch({
  headless: false,
});
var page = await browser.newPage();
await page.goto('thesite.com/login/');

await page.click(USERNAME_SELECTOR);

await page.keyboard.type(CREDS.username);

await page.click(PASSWORD_SELECTOR);
await page.keyboard.type(CREDS.password);

await page.click(BUTTON_SELECTOR);
await page.waitForNavigation();

const TABLE_ROW_SELECTOR = '.gv-container.gv-container-133 > table > tbody';
await page.waitForSelector(TABLE_ROW_SELECTOR);

await page.waitForSelector(TABLE_ROW_SELECTOR);


await page.screenshot({ path: 'example.png' });  
const data = await page.evaluate(SELECTOR => document.querySelectorAll(SELECTOR), TABLE_ROW_SELECTOR);




await browser.close();
})();

This is mostly working. however in my console I see a list of objects but as far as I can tell no values. Heres the fiest object:

0:Object {}
__proto__:Object {constructor: , __defineGetter__: , __defineSetter__: , …}
__defineGetter__:function __defineGetter__() { … }
__defineSetter__:function __defineSetter__() { … }
__lookupGetter__:function __lookupGetter__() { … }
__lookupSetter__:function __lookupSetter__() { … }
constructor:function Object() { … }
hasOwnProperty:function hasOwnProperty() { … }
No debug adapter, can not send 'variables'
isPrototypeOf:function isPrototypeOf() { … }
No debug adapter, can not send 'variables'

What does " No debug adapter, can not send 'variables'" mean?

edit:

I updated to the latest vscode and checked that all extensions were updated. Now when I run LAUNCH PROGRAM

E:\nodejs\node.exe --inspect-brk=27108 index.js 
Debugger listening on ws://127.0.0.1:27108/e5928c71-370c-  4111-9ec3-77bb2cd85075
For help, see: https://nodejs.org/en/docs/inspector
(node:12844) ExperimentalWarning: The fs.promises API is experimental
warning.js:18
Array(25) [ElementHandle, ElementHandle, ElementHandle, ElementHandle,    ElementHandle, ElementHandle, ElementHandle, ElementHandle, …]
index.js:64
length:25
__proto__:Array(0) [, …]
concat:function concat() { … }
[[Scopes]]:Scopes[0]
arguments:TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode functions or the arguments objects for calls to them

Any idea what this means?

5 Answers

I had this issue when trying to use the integratedConsole rather than integratedTerminal or externalTerminal as part of my Node configuration within launch.json:

Setting it back to:

"console": "integratedTerminal"

Fixed it. Only took an hour to figure out. See docs for more information.

The reason this happens is that the debugger stops after the code execution ends. Then there is no more debug adapter available to send the variables. What I did is add an extra line on the bottom of the code execution, and set a breakpoint on that. It isn't pretty, but it works.

I had the same problem, but that was me who caused this error ...

I have a conditional breakpoint defined in some scope of code, I have tried to use it in another conditional breakpoint but in a different scope.

The variable used on this condition was not found in the new scope. that's why the debugger can not start and gives us this error.

When I figured out, I used the defined variables on the scope to get the condition work properly.

Not a very big deal, but I hope this can help someone

I had a similar problem when the JavaScript script was erroring-out because of a missing async keyword on an await-using function during an initial evaluation step before normal execution and the vscode debugger was not catching the error in a meaningful error reporting context before the execution context exited.

Related