yujiosaka/headless-chrome-crawler

UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received type function

LeMoussel opened this issue · 1 comments

I tried emulate-device.js by setting url to http://pieroxy.net/blog/2014/11/18/user_agent_detection_in_java.html.

I got this error :

(node:2076) UnhandledPromiseRejectionWarning: TypeError [ERR_INVALID_ARG_TYPE]: The "url" argument must be of type string. Received type function
at Url.parse (url.js:152:11)
at urlParse (url.js:146:13)
at urlResolve (url.js:657:10)
at resolveUrl (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\lib\helper.js:80:14)
at Map._page.exposeFunction.link [as pushToLinks] (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\lib\crawler.js:282:21)
at Page._onConsoleAPI (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\puppeteer\lib\Page.js:478:52)
at CDPSession.Page.client.on.event (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\puppeteer\lib\Page.js:128:57)
at CDPSession.emit (events.js:182:13)
at CDPSession._onMessage (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\puppeteer\lib\Connection.js:232:12)
at Connection._onMessage (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\puppeteer\lib\Connection.js:119:19)
at WebSocket.emit (events.js:182:13)
at Receiver.receiverOnMessage (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\ws\lib\websocket.js:720:20)
at Receiver.emit (events.js:182:13)
at Receiver.dataMessage (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\ws\lib\receiver.js:414:14)
at Receiver.getData (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\ws\lib\receiver.js:346:17)
at Receiver.startLoop (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\ws\lib\receiver.js:133:22)
at Receiver._write (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\ws\lib\receiver.js:69:10)
at doWrite (_stream_writable.js:410:12)
at writeOrBuffer (_stream_writable.js:394:5)
at Receiver.Writable.write (_stream_writable.js:294:11)
at Socket.socketOnData (D:\Developpement\NodeJS\headless-chrome-crawler\node_modules\headless-chrome-crawler\node_modules\ws\lib\websocket.js:795:35)
at Socket.emit (events.js:182:13)
(node:2076) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 62)

I try to catch it, like this

  try {  
    await crawler.queue('http://pieroxy.net/blog/2014/11/18/user_agent_detection_in_java.html');
    await crawler.onIdle();
    await crawler.close();
  } catch (e) { }

Or this

(async () => {
.....
})().catch(() => { });

but without sucking. There's always that mistake.

Solved with PR #352