not() expects you to use the raw PostgREST syntax for the filter values.
.not('id', 'in', '(5,6,7)')  // Use `()` for `in` filter
.not('arraycol', 'cs', '{"a","b"}')  // Use `cs` for `contains()`, `{}` for array values
const { data, error } = await supabase
  .from('countries')
  .select()
  .not('name', 'is', null)