# Graphql-scalers Package and Federation 2 buildSubgraphSchema Error

**URL:** <https://community.apollographql.com/t/graphql-scalers-package-and-federation-2-buildsubgraphschema-error/5629>\
**Category:** Server\
**Tags:** server, tooling\
**Created:** [February 3, 2023, 3:20pm UTC](https://community.apollographql.com/t/graphql-scalers-package-and-federation-2-buildsubgraphschema-error/5629 "2023-02-03T15:20:43Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Royt](https://avatars.discourse-cdn.com/v4/letter/r/e19b73/32.png) [@Royt](https://community.apollographql.com/u/Royt)\
**Post date:** [February 3, 2023, 3:20pm UTC](https://community.apollographql.com/t/graphql-scalers-package-and-federation-2-buildsubgraphschema-error/5629/1 "2023-02-03T15:20:43Z")

</div>

Hi,

Is there a compatibility issue with grapql-scalars and buildSubgraphSchema?  
I’m getting an error when using DateTime:

TypeError: doc.definitions is not iterable (cannot read property undefined)  
at concatAST (/Users/taranro/IdeaProjects/myweather/node\_modules/graphql/utilities/concatAST.js:19:17)

Here’s the Apollo example with DateTime added:

```auto
import { ApolloServer } from '@apollo/server';
import { startStandaloneServer } from '@apollo/server/standalone';
import gql from 'graphql-tag';
import { buildSubgraphSchema } from '@apollo/subgraph';
import {resolvers as scalarResolvers, typeDefs as scalarTypeDefs} from "graphql-scalars";
import {typeDefs as myTypeDefs} from "./graphql/schema/weatherschema.js";
import {resolvers as myResolvers} from "./graphql/resolvers/weatherresolvers.js";

const typeDefs = gql`
  extend schema @link(url: "https://specs.apollo.dev/federation/v2.0", import: ["@key", "@shareable"])

  type Query {
    me: User
  }

  type User @key(fields: "id") {
    id: ID!
    username: String
    birthday: DateTime
  }
`;

const resolvers = {
    Query: {
        me() {
            return { id: '1', username: '@ava' };
        },
    },
    User: {
        __resolveReference(user, { fetchUserById }) {
            return fetchUserById(user.id);
        },
    },
};

const allTypeDefs = [...scalarTypeDefs, typeDefs];
const allResolvers = {...scalarResolvers, ...resolvers};

const server = new ApolloServer({
    schema: buildSubgraphSchema({ allTypeDefs, allResolvers }),
});

const { url } = await startStandaloneServer(server);
console.log(`🚀 Server ready at ${url}`);

```

Getting when running:

```auto
 definitions.push(...doc.definitions);
                            ^

TypeError: doc.definitions is not iterable (cannot read property undefined)
    at concatAST (/Users/taranro/IdeaProjects/myweather/node_modules/graphql/utilities/concatAST.js:19:17)
    at buildSubgraphSchema (/Users/IdeaProjects/myweather/node_modules/@apollo/subgraph/dist/buildSubgraphSchema.js:26:49)
    at file:///Users/IdeaProjects/myweather/i.js:40:13
    at ModuleJob.run (node:internal/modules/esm/module_job:193:25)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:530:24)
    at async loadESM (node:internal/process/esm_loader:91:5)
    at async handleMainPromise (node:internal/modules/run_main:65:12)

Node.js v18.12.1

```

Thanks,  
Roy

---

<div class="post-metadata">

**Author:** ![lennyburdette](https://sea1.discourse-cdn.com/flex019/user_avatar/community.apollographql.com/lennyburdette/32/84_2.png) [@lennyburdette](https://community.apollographql.com/u/lennyburdette)\
**Post date:** [February 4, 2023, 10:31pm UTC](https://community.apollographql.com/t/graphql-scalers-package-and-federation-2-buildsubgraphschema-error/5629/2 "2023-02-04T22:31:19Z")

</div>

> [@Royt](#):
>
> `buildSubgraphSchema({ allTypeDefs, allResolvers }),`

The properties of the object passed to buildSubgraphSchema are named typeDefs and resolvers, so you probably mean

```auto
buildSubgraphSchema({ typeDefs: allTypeDefs, resolvers: allResolvers })

```

Though I’m not confident that you can pass an array for typeDefs. You might need to merge the type definitions some other way.

---

<div class="post-metadata">

**Author:** ![Royt](https://avatars.discourse-cdn.com/v4/letter/r/e19b73/32.png) [@Royt](https://community.apollographql.com/u/Royt)\
**Post date:** [February 6, 2023, 4:34pm UTC](https://community.apollographql.com/t/graphql-scalers-package-and-federation-2-buildsubgraphschema-error/5629/3 "2023-02-06T16:34:53Z")

</div>

Hi Lenny,

Thanks for the response.  
Can you provide more detail on the best way to merge schemas for buildSubGraphSchema()?  
It would add a lot of value to the combined example in:

[Implementing a subgraph with Apollo Server - Apollo GraphQL Docs](https://www.apollographql.com/docs/apollo-server/using-federation/apollo-subgraph-setup/#defining-a-subgraph)

if you can show the Apollo recommended way to merge schemas from a very commonly used package package such as graphql-scalars with a user defined schema.

Thanks,  
Roy

---

<div class="post-metadata">

**Author:** ![Royt](https://avatars.discourse-cdn.com/v4/letter/r/e19b73/32.png) [@Royt](https://community.apollographql.com/u/Royt)\
**Post date:** [February 6, 2023, 5:18pm UTC](https://community.apollographql.com/t/graphql-scalers-package-and-federation-2-buildsubgraphschema-error/5629/4 "2023-02-06T17:18:09Z")

</div>

Lenny - sorry my bad. I assumed you are an Apollo employee! 🤐

---

<div class="post-metadata">

**Author:** ![lennyburdette](https://sea1.discourse-cdn.com/flex019/user_avatar/community.apollographql.com/lennyburdette/32/84_2.png) [@lennyburdette](https://community.apollographql.com/u/lennyburdette)\
**Post date:** [February 6, 2023, 5:31pm UTC](https://community.apollographql.com/t/graphql-scalers-package-and-federation-2-buildsubgraphschema-error/5629/5 "2023-02-06T17:31:58Z")

</div>

I am an Apollo Solutions Architect, but our recommendation for merging schemas in JS is to use [Schema Merging – GraphQL Tools](https://the-guild.dev/graphql/tools/docs/schema-merging)

---

<div class="post-metadata">

**Author:** ![Royt](https://avatars.discourse-cdn.com/v4/letter/r/e19b73/32.png) [@Royt](https://community.apollographql.com/u/Royt)\
**Post date:** [February 7, 2023, 2:26pm UTC](https://community.apollographql.com/t/graphql-scalers-package-and-federation-2-buildsubgraphschema-error/5629/6 "2023-02-07T14:26:10Z")

</div>

Thanks, mergeTypeDefs from graphql-tools/merge worked:

```auto
import { mergeTypeDefs } from '@graphql-tools/merge';

const allResolvers = {...scalarResolvers, ...resolvers};
const mergedTypes = mergeTypeDefs([scalarTypeDefs, typeDefs]);

const server = new ApolloServer({
    schema: buildSubgraphSchema({typeDefs:mergedTypes, resolvers:allResolvers}),
});

```
