51

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?

user1592380
  • 34,265
  • 92
  • 284
  • 515

5 Answers5

74

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.

Nick
  • 4,901
  • 40
  • 61
49

You can also try:

"outputCapture": "std"

in your launch.json

Here is reference on Github

Shimi Shimson
  • 990
  • 9
  • 10
  • 6
    worked really well to preserve all output in the debug console (as opposed to polluting the terminal like the "console": "integratedTerminal" option would) – JKJ Jan 25 '21 at 17:12
  • 1
    Glad it helped in the way you expected. :) – Shimi Shimson Jan 25 '21 at 21:20
26

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.

Tiamo Idzenga
  • 1,006
  • 11
  • 23
1

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

do7
  • 21
  • 3
0

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.

stackuser83
  • 2,012
  • 1
  • 24
  • 41