Async throwing SyntaxError: Unexpected token (

4.6k views Asked by At

I'm running a test using the headless Chrome package Puppeteer:

const puppeteer = require('puppeteer')

;(async() => {
  const browser = await puppeteer.launch()
  const page = await browser.newPage()
  await page.goto('https://google.com', {waitUntil: 'networkidle'})
  // Type our query into the search bar
  await page.type('puppeteer')

  await page.click('input[type="submit"]')

  // Wait for the results to show up
  await page.waitForSelector('h3 a')

  // Extract the results from the page
  const links = await page.evaluate(() => {
    const anchors = Array.from(document.querySelectorAll('h3 a'))
    return anchors.map(anchor => anchor.textContent)
  })
  console.log(links.join('\n'))
  browser.close()
})()

And I'm running the script as: node --harmony test/e2e/puppeteer/index.js (v6.9.1)

But I get this error:

;(async() => {
       ^
SyntaxError: Unexpected token (

What could be the problem?

Note: I'm using Vue CLI's official Webpack template:

2

There are 2 answers

0
Théophile Pace On BEST ANSWER

I found out: node LTS (AKA node 6) is not supporting async / await mechanism right now. See : enter image description here

See here for details : https://www.infoq.com/news/2017/02/node-76-async-await

2
Théophile Pace On

I tried your code on my laptop after a lint and it worked perfectly: enter image description here

Maybe you have an environment issue.

have you considered removing the semi colon at the beginning of the line? It does not look like right programing. Or maybe a webpack issue.