Home > Net >  TypeError: Assignment to constant variable ,After Changing it to let/var
TypeError: Assignment to constant variable ,After Changing it to let/var

Time:01-17

Im trying to set the binary path of a binary of chrome with selenium, in javascript language. unfortunately, my knowledge in javascript is limited, and Im getting an error while trying to do so, in which I cannot solve, despite my efforts. so without further ado, I will now share my problem, with the hope that someone with a better knowledge in javascript then me, will help me some background: Im triggering a function in the firebase could functions, inside this function , I'm trying to create a selenium webdriver. in order to do so:

I need to do those things:

  1. chromedriver --> that work on a linux system(located inside the functions project folder)✅

  2. chrome browser binary that is located on this machine ✅ 3.then, I need to create a a chrome Options object. a. adding an Argument so it will be headless.✅ b. setting it with a path to the chrome binary.❌

  3. and at last, create a chrome driver with options, that I have created

currently, I'm at stage 3.b

the error that rise coming from my poor knowledge in javascript this is the error : TypeError: Assignment to constant variable.

here what's lead to this error

this is my code :

exports.initializedChromeDriver = functions.https.onRequest((request, response) => {
  
    async function start_chrome_driver() {

        try {
        functions.logger.info('Hello logs!', {structuredData: true});
        console.log("did enter the function")
        
        const google_site = "https://www.gooogle.com"; 
        const { WebDriver } =  require('selenium-webdriver');
        const {Builder, By} = require('selenium-webdriver');
        
        console.log("will try to initialzed chrome");
        let chrome = require('selenium-webdriver/chrome');
        console.log("did initialzed chrome");
        var chrome_options = new chrome.Options()
        console.log("will try to set the chrome binary Path");
        functions.logger.info('new chrome.Options()', {structuredData: true});
        chrome_options = chrome_options.setChromeBinaryPath(path="/usr/bin/google-chrome");// <------- THIS IS  THE LINE THAT RISE THE ERROR!
        console.log("did setChromeBinaryPath");
        chrome_options.addArguments("--headless");
        let buillder = new Builder().forBrowser('chrome');
        functions.logger.info(' did new Builder().forBrowser(chrome)', {structuredData: true});

        const google_site = 'https://wwww.google.com'
        await driver.get(google_site);
        functions.logger.info('driver did open google site', {structuredData: true});
        
        return  "succ loading google"

        }
        catch (err) {
            console.log('did catch')
            console.error(err);
            return "error loading google";
        }
     

     }
        const p = start_chrome_driver().then((value,reject) => {
            const dic = {};
            dic['status'] = 200;
            dic['data'] = {"message": value};
            response.send(dic);
        });

and here's the error that follows this code in the firebase functions logs: enter image description here

I tried to change the chrome_options object into var/let, and looking for answers in the web , but after deploying again, and again, and again.. I feel like its time to get another perspective, any help will do.

CodePudding user response:

You have an unnecessary assignment here (path=...)

chrome_options = chrome_options.setChromeBinaryPath(path="/usr/bin/google-chrome");

Just remove the assignment to path

chrome_options = chrome_options.setChromeBinaryPath("/usr/bin/google-chrome");
  •  Tags:  
  • Related