'NHOST TypeError: (intermediate value) is not a function

The following code from NHOST (https://docs.nhost.io/get-started/quick-start/javascript-client):

import { NhostClient } from '@nhost/nhost-js'

const nhost = new NhostClient({
  backendUrl: 'https://[app-subdomain].nhost.run'
})(async () => {
  // nhost.graphql.request returns a promise, so we use await here
  const todos = await nhost.graphql.request(`
    query {
      todos {
        id
        created_at
        name
        is_completed
      }
    }
  `)

  // Print todos to console
  console.log(JSON.stringify(todos.data, null, 2))
})()

is giving me an error in the terminal:

})(async () => {
  ^

TypeError: (intermediate value) is not a function
    at file:///Users/User/Documents/nhost-todos/index.js:5:3
    at ModuleJob.run (node:internal/modules/esm/module_job:197:25)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:337:24)
    at async loadESM (node:internal/process/esm_loader:88:5)
    at async handleMainPromise (node:internal/modules/run_main:61:12)

It's supposed to return:

null

after running node index.js.

Any help would be much appreciated. These are all relatively new concepts for me.



Solution 1:[1]

You can do this:

import { NhostClient } from '@nhost/nhost-js';

const nhost = new NhostClient({
  backendUrl: '',
});

const request = async () => {
  // nhost.graphql.request returns a promise, so we use await here
  const todos = await nhost.graphql.request(`
      query {
        todos {
          id
          created_at
          name
          is_completed
        }
      }
    `);

  // Print todos to console
  console.log(JSON.stringify(todos.data, null, 2));
};

request();

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Tyler2P