hcengineering/platform · error

Love service endpoint not found

Error message

Love service endpoint not found

What it means

getLoveEndpoint reads the 'Love service endpoint' from client metadata (love.metadata.ServiceEnpdoint). If that metadata key is undefined — i.e. the server never injected the endpoint URL into the client configuration — the client cannot know where the Love service lives and throws immediately. This is a configuration-missing error thrown before any network call is attempted.

Source

Thrown at plugins/love-resources/src/loveClient.ts:74

        await fetch(concatLink(endpoint, '/startRecord'), {
          method: 'POST',
          headers: {
            Authorization: 'Bearer ' + token,
            'Content-Type': 'application/json'
          },
          body: JSON.stringify({ roomName, room: room.name, meetingMinutes: get(currentMeetingMinutes)?._id })
        })
      }
    } catch (err: any) {
      Analytics.handleError(err)
      console.error(err)
    }
  }

  private getLoveEndpoint (): string {
    const endpoint = getMetadata(love.metadata.ServiceEnpdoint)
    if (endpoint === undefined) {
      throw new Error('Love service endpoint not found')
    }

    return endpoint
  }

  private async refreshRoomToken (room: Room): Promise<string> {
    const sessionName = this.getTokenRoomName(room)
    const endpoint = this.getLoveEndpoint()
    if (endpoint === undefined) {
      throw new Error('Love service endpoint not found')
    }
    const myPerson = await getPersonByPersonRef(getCurrentEmployee())
    if (myPerson == null) {
      throw new Error('Cannot find current person')
    }
    const platformToken = getPlatformToken()
    const res = await fetch(concatLink(endpoint, '/getToken'), {
      method: 'POST',

View on GitHub (pinned to 63e28dc964)

Solutions

  1. Ensure the server/account configuration sets the love service endpoint metadata (love.metadata.ServiceEnpdoint) before the client initializes; restart/reconnect after configuring.
  2. Check the deployment config (e.g. workspace/service URL settings) and add the Love service endpoint, then reload the client.
  3. Verify frontend and love plugin versions match so the metadata key is the one the server actually writes.
  4. In code, read the metadata first and bail out with a friendly message instead of constructing the client when it is undefined.

Example fix

// before
const client = new LoveClient(token)
const ep = client.endpoint // throws if metadata missing
// after
const endpoint = getMetadata(love.metadata.ServiceEnpdoint)
if (endpoint === undefined) {
  console.error('Love service endpoint is not configured')
} else {
  const client = new LoveClient(token)
  const ep = client.endpoint
}
Defensive patterns

Strategy: try-catch

Validate before calling

const endpoint = getMetadata(love.metadata.ServiceEnpdoint)
if (endpoint === undefined) {
  // service not configured; do not construct/use LoveClient
  return
}

Type guard

function hasLoveEndpoint (ep: string | undefined): ep is string {
  return typeof ep === 'string' && ep.length > 0
}

Try / catch

try {
  const ep = client.endpoint
} catch (err) {
  if (err.message === 'Love service endpoint not found') {
    showSetupRequiredNotice()
    return
  }
  throw err
}

Prevention

When it happens

Trigger: Any LoveClient method that resolves the endpoint (directly or via refreshRoomToken) runs in a client bundle that was started without the love service endpoint metadata registered, e.g. endpoint or getRoomToken called before server config is applied.

Common situations: Self-hosted deployment where the love/voximplant service URL was never configured; frontend built/started before the backend registered love.metadata.ServiceEnpdoint; typo or outdated plugin version where the metadata key name (note the 'ServiceEnpdoint' spelling) does not match what the server sets.

Related errors


AI-assisted analysis of hcengineering/platform@63e28dc964 (2026-08-29). Data as JSON: /api/errors/0d2baf08595879a3. Report an issue: GitHub.