[SOLVED] Error: "Cannot read property 'isJoined' of undefined"

Hi,

I see the following error when connecting the Jibri to a JWT-enabled Jitsi. The call page fails to load and get timed out. However on checking chromedriver.log I see the following error:

 "Cannot read property 'isJoined' of undefined"

What could be the reason for this error? Where can I find the definition of the isJoined function? I see isJoined of “undefined”, so may be APP is not loading? Where can I find the necessary source for the same and debug it?

The Jibri source:
return APP.conference._room.isJoined();

Abhijit

The error you see is that

is undefined. It means it fails to join the muc, as _room is the muc representation coming from lib-jitsi-meet. You either need more information before this error (not user there is more in the log file before you see this). I purposed to you a way to debug it from the browser on your PC. [SOLVED] Jibri with JWT token enabled Jitsi - #23 by damencho

Solved here:

Hi there, similar situation I face. I try to implement it on a RHEL server by using chrome headless.

At first, the problem looks related to isJoined() from my chrome driver logs. However when I try to get the URL via chrome browser: http://172.21.193.95:8000/kermit#config.iAmRecorder=true&config.externalConnectUrl=null&config.startWithAudioMuted=true&config.startWithVideoMuted=true&interfaceConfig.APP_NAME="Jibri"

I noticed that APP.conference._room object is absent as you can see in the picture. How should I debug the problem? Can it be related getUserMedia problem? I saw same logs in the headless chrome driver and browser logs. No JWT token - just internal plain btw.

Thanks in advance…

You cannot use webrtc with http.

Yes, you are right. Looks it’s due to getUserMedia and etc. as far as I understand. However, when I try to do it via https, I encounter another legent problem. Local storage.

[1593717696.427][INFO]: [b03009a6ed89fd87055f0d997f2adb0b] RESPONSE ExecuteScript ERROR : Failed to read the ‘localStorage’ property from ‘Window’: Access is denied for this document.

I put the three logs here, if you have time. Pls, ignore BVB keywords in jibri log, I put them to debug.

https-jibri-log.txt (8.3 KB) https-chromedriver.txt (13.9 KB) https-browser.txt (35.7 KB)

Anyway, when I tried to enter the URL “https://172.21.193.95:8000” in web browser, I saw ERR_SSL_PROTOCOL_ERROR. It isn’t same as the logs.

The jibri node and prosody-nginx-jicofo node are different servers. And -frankly speaking- the company regulations don’t let us use open internet access server for the jibri. So we have to connect the jibri node and the other node via our LAN somehow. I mean local IP 172.21.193.95 and port 8000.

Is there any security mechanism for the system apart from the usual TLS? Where are we stuck? Should we take a look at prosody logs? Because I observed some prosody logs about the certification. However, I don’t think they are the root cause of the problem.
Jul 02 01:35:13 certmanager debug No certificate/key found for ***

Do you have any idea? Thanks in advance again…

Hi,

I cannot succeded with the information here people provided. Finally I succeded with the new jibri.conf file configuration which set the google chrome flags. Here is my succesfull config file. I wish you can use it;

This jibri.conf file is placed in /etc/jitsi/jibri/jibri.conf

If you use this file you won’t need config.json (/etc/jitsi/jibri/config.json) file anymore. This is the new type.

jibri {

    chrome {
        // The flags which will be passed to chromium when launching
        flags = [
            "--use-fake-ui-for-media-stream", # actual option, necessary to fix "Cannot read property 'isJoined' of undefined -> this is a selenium error :(
            "--start-maximized",
            "--kiosk",
            "--enabled",
            "--disable-infobars",
            "--autoplay-policy=no-user-gesture-required",
            "--disable-setuid-sandbox",
            "--disable-web-security",
            "--disable-dev-shm-usage", # if /dev/shm partition is not enough space you may get no media session error. if you set as this google chrome use /tmp rather than /dev/shm partiton
            "--ignore-certificate-errors", # if you get some certificate error (if you use jitsi server's internal IP rather than public ip), you can set this flag.
            "--no-sandbox"
        ]
    }

    recording {
        recordings-directory = "/tmp/recording"
        # TODO: make this an optional param and remove the default
        finalize-script = "/finalize_recording.sh"
    }
    api {
        xmpp {
            environments = [
                {
                    name = "New Jibri"
                    xmpp-server-hosts = ["IP address of your jitsi server or domain name"]
                    xmpp-domain = "example.com"

                    control-muc {
                        domain = "internal.auth.example.com"
                        room-name = "JibriBrewery"
                        nickname = "new-jibri-instance-1"
                    }

                    control-login {
                        domain = "auth.example.com"
                        username = "jibri"
                        password = password which is defined in prosody
                    }

					// if you use video gateway you can input the details. it is not easy
                    //sip-control-muc {
                    //    domain = ""
                    //    room-name = ""
                    //    nickname = ""
                    //}

                    call-login {
                        domain = "recorder.example.com"
                        username = "recorder"
                        password = "password which is defined in prosody"
                    }

                    strip-from-room-domain = "conference."
                    usage-timeout = 0

					// this is optional
                    trust-all-xmpp-certs = true
                }
            ]
        }
    }
}

But I think joining muc is working well on my side.
Please help me, master.

Thanks.