Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

582
Views
ReferenceError: window is not defined in agora-rtc-sdk-ng in node js

What I want to do

I want manually add users to the channel from the backend(node js) using agora SDK.

Error

I am getting ReferenceError: window is not defined while implementing Agora-Rtc-SDK in Node js

https://prnt.sc/52Dp_D9-gwEu

I tried agora-rtc-SDK-ng and agora-rtc-sdk both libraries but I am getting the same error.

Here is What I did

First I generate token using agora-access-token then after using that token I join the particular channel

Code

const cors = require('cors');
const dotenv = require('dotenv');
const AgoraRTC = require('agora-rtc-sdk-ng')
const {RtcTokenBuilder, RtcRole } = require('agora-access-token');


dotenv.config();
const app = express();
const PORT = process.env.PORT || 8080;
const APP_ID = process.env.APP_ID;
const APP_CERTIFICATE = process.env.APP_CERTIFICATE;


const generateRTCToken = (req, resp) => {
  const channelName = req.params.channel;
  let uid = req.params.uid;

  // get role
  let role;
  if (req.params.role === 'publisher') {
    role = RtcRole.PUBLISHER;
  } else if (req.params.role === 'audience') {
    role = RtcRole.SUBSCRIBER
  } else {
    return resp.status(500).json({ 'error': 'role is incorrect' });
  }
  // get the expire time
  let expireTime = req.query.expiry;
  if (!expireTime || expireTime === '') {
    expireTime = 3600;
  } else {
    expireTime = parseInt(expireTime, 10);
  }
  // calculate privilege expire time
  const currentTime = Math.floor(Date.now() / 1000);
  const privilegeExpireTime = currentTime + expireTime;
  // build the token
  let token;
  if (req.params.tokentype === 'userAccount') {
    token = RtcTokenBuilder.buildTokenWithAccount(APP_ID, APP_CERTIFICATE, channelName, uid, role, privilegeExpireTime);
  } else if (req.params.tokentype === 'uid') {
    token = RtcTokenBuilder.buildTokenWithUid(APP_ID, APP_CERTIFICATE, channelName, uid, role, privilegeExpireTime);
  } else {
    return resp.status(500).json({ 'error': 'token type is invalid' });
  }
  // return the token
  return token;
}

const addUserToChannle = async () => {
  const client = AgoraRTC.createClient({
    codec: "vp8",
    mode: "rtc",
  });

  let token = await generateRTCToken()
  client.join(APP_ID, req.params.channel, token);
}


app.get('/rtc/:channel/:role/:tokentype/:uid', nocache , addUserToChannle);

app.listen(PORT, () => {
  console.log(`Listening on port: ${PORT}`);
});


  [1]: https://prnt.sc/52Dp_D9-gwEu
about 4 years ago · Juan Pablo Isaza
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!