出乎意料<EOF>:一个graphql文件可以只导入其他文件而不做任何其他事情吗?
Unexpected <EOF>: Can a graphql file only import other files and do nothing else?
我正在使用 apollo-server-express
到 运行 我的带有 prisma 数据库的 GraphQL 服务器。下面列出了我的主要架构,它仅使用 graphql-tag/loader
导入其他 .graphql
文件。当我尝试在本地 运行 我的服务器时,我收到以下消息:
Error: Module build failed (from ./node_modules/graphql-tag/loader.js):
GraphQLError: Syntax Error: Unexpected
显然,GraphQL 希望 schema/schema.graphql
声明一些类型等。有没有办法解决这个问题,这样我就可以拥有一个 .graphql
文件,它所做的只是导入其他 .graphql
个文件?
schema/schema.graphql:
#import '../generated/prisma.graphql'
#import './secondSchema.graphql'
index.js:
import http from 'http';
import express from 'express';
import { ApolloServer } from 'apollo-server-express';
import resolvers from './schema/resolvers';
import schema from './schema/schema.graphql';
import prisma from './prisma';
const server = new ApolloServer({
context: {
prisma,
},
resolvers,
typeDefs: schema,
});
const app = express();
server.applyMiddleware({ app });
const PORT = 5000;
const httpServer = http.createServer(app);
server.installSubscriptionHandlers(httpServer);
httpServer.listen(PORT, () => {
console.log(`Server ready at http://localhost:${PORT}${server.graphqlPath}`);
console.log(`Subscriptions ready at ws://localhost:${PORT}${server.subscriptionsPath}`);
});
if (module.hot) {
module.hot.accept();
module.hot.dispose(() => server.stop());
}
您可以添加 "dummy" 或实际未在任何地方使用的占位符类型,这样解析器就不会报错。但是,更简单的解决方法是停止将其他类型定义文件导入到一个文件中,并将它们作为数组传递给 typeDefs
。
const server = new ApolloServer({
context: {
prisma,
},
resolvers,
typeDefs: [prismaTypeDefs, someOtherTypeDefs],
});
我正在使用 apollo-server-express
到 运行 我的带有 prisma 数据库的 GraphQL 服务器。下面列出了我的主要架构,它仅使用 graphql-tag/loader
导入其他 .graphql
文件。当我尝试在本地 运行 我的服务器时,我收到以下消息:
Error: Module build failed (from ./node_modules/graphql-tag/loader.js): GraphQLError: Syntax Error: Unexpected
显然,GraphQL 希望 schema/schema.graphql
声明一些类型等。有没有办法解决这个问题,这样我就可以拥有一个 .graphql
文件,它所做的只是导入其他 .graphql
个文件?
schema/schema.graphql:
#import '../generated/prisma.graphql'
#import './secondSchema.graphql'
index.js:
import http from 'http';
import express from 'express';
import { ApolloServer } from 'apollo-server-express';
import resolvers from './schema/resolvers';
import schema from './schema/schema.graphql';
import prisma from './prisma';
const server = new ApolloServer({
context: {
prisma,
},
resolvers,
typeDefs: schema,
});
const app = express();
server.applyMiddleware({ app });
const PORT = 5000;
const httpServer = http.createServer(app);
server.installSubscriptionHandlers(httpServer);
httpServer.listen(PORT, () => {
console.log(`Server ready at http://localhost:${PORT}${server.graphqlPath}`);
console.log(`Subscriptions ready at ws://localhost:${PORT}${server.subscriptionsPath}`);
});
if (module.hot) {
module.hot.accept();
module.hot.dispose(() => server.stop());
}
您可以添加 "dummy" 或实际未在任何地方使用的占位符类型,这样解析器就不会报错。但是,更简单的解决方法是停止将其他类型定义文件导入到一个文件中,并将它们作为数组传递给 typeDefs
。
const server = new ApolloServer({
context: {
prisma,
},
resolvers,
typeDefs: [prismaTypeDefs, someOtherTypeDefs],
});