mirror of
https://github.com/sergeyyarkov/next-apollo-graphql-setup.git
synced 2026-10-11 10:19:43 +03:00
♻️ graphql to next js server
This commit is contained in:
parent
b6ce0ca04e
commit
699dc0e8e2
27
.gitignore
vendored
27
.gitignore
vendored
@ -1,2 +1,25 @@
|
||||
node_modules
|
||||
package-lock.json
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env*
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
|
||||
@ -11,7 +11,7 @@ npm run dev
|
||||
```
|
||||
Open http://localhost:3000 with your browser to see the result.
|
||||
|
||||
Our application runs on port `3000`, and GraphQL server also runs on port `3005`.
|
||||
Our application runs on port `3000`, and GraphQL server also runs on `localhost:3000/api/graphql`.
|
||||
|
||||
## ⚡ Using Query
|
||||
|
||||
|
||||
25
client/.gitignore
vendored
25
client/.gitignore
vendored
@ -1,25 +0,0 @@
|
||||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
|
||||
|
||||
# dependencies
|
||||
/node_modules
|
||||
/.pnp
|
||||
.pnp.js
|
||||
|
||||
# testing
|
||||
/coverage
|
||||
|
||||
# next.js
|
||||
/.next/
|
||||
/out/
|
||||
|
||||
# production
|
||||
/build
|
||||
|
||||
# misc
|
||||
.DS_Store
|
||||
.env*
|
||||
|
||||
# debug
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
@ -1,24 +0,0 @@
|
||||
{
|
||||
"name": "apollo-next-graphql-setup",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@apollo/react-hooks": "^3.1.3",
|
||||
"@apollo/react-ssr": "^3.1.3",
|
||||
"@zeit/next-sass": "^1.0.1",
|
||||
"apollo-boost": "^0.4.7",
|
||||
"graphql-tag": "^2.10.3",
|
||||
"isomorphic-unfetch": "^3.0.0",
|
||||
"next": "9.2.2",
|
||||
"next-with-apollo": "^5.0.0",
|
||||
"node-sass": "^4.13.1",
|
||||
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
||||
"react": "16.13.0",
|
||||
"react-dom": "16.13.0"
|
||||
}
|
||||
}
|
||||
@ -4,7 +4,7 @@ import { ApolloProvider } from '@apollo/react-hooks'
|
||||
import { ApolloClient, InMemoryCache, HttpLink } from 'apollo-boost'
|
||||
import fetch from 'isomorphic-unfetch'
|
||||
|
||||
const GRAPHQL_URL = process.env.BACKEND_URL || 'http://localhost:3005/graphql'
|
||||
const GRAPHQL_URL = process.env.BACKEND_URL || 'http://localhost:3000/api/graphql'
|
||||
|
||||
let apolloClient = null
|
||||
|
||||
14031
package-lock.json
generated
Normal file
14031
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
46
package.json
46
package.json
@ -1,31 +1,25 @@
|
||||
{
|
||||
"name": "apollo-next-graphql-setup",
|
||||
"version": "1.0.0",
|
||||
"description": "This is a next-apollo-graphql setup to start develop your web site. This setup uses server side rendering.",
|
||||
"main": "index.js",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"postinstall": "cd ./client && npm install && cd ../server && npm install && cd ..",
|
||||
"build": "npm run --prefix ./client build",
|
||||
"dev": "concurrently \"npm run --prefix ./server/ dev\" \"npm run --prefix ./client/ dev\"",
|
||||
"start": "concurrently \"npm run --prefix ./server/ start\" \"npm run --prefix ./client/ start\""
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/sergeyyarkov/next-apollo-graphql-setup.git"
|
||||
},
|
||||
"keywords": [
|
||||
"react",
|
||||
"nextjs",
|
||||
"nodejs",
|
||||
"apollo",
|
||||
"graphql",
|
||||
"apollo-client",
|
||||
"express"
|
||||
],
|
||||
"author": "Sergey Yarkov",
|
||||
"license": "ISC",
|
||||
"bugs": {
|
||||
"url": "https://github.com/sergeyyarkov/next-apollo-graphql-setup/issues"
|
||||
},
|
||||
"homepage": "https://github.com/sergeyyarkov/next-apollo-graphql-setup#readme"
|
||||
"dependencies": {
|
||||
"@apollo/react-hooks": "^3.1.3",
|
||||
"@apollo/react-ssr": "^3.1.3",
|
||||
"@zeit/next-sass": "^1.0.1",
|
||||
"apollo-boost": "^0.4.7",
|
||||
"apollo-server-micro": "^2.10.1",
|
||||
"graphql-tag": "^2.10.3",
|
||||
"isomorphic-unfetch": "^3.0.0",
|
||||
"next": "9.2.2",
|
||||
"next-with-apollo": "^5.0.0",
|
||||
"node-sass": "^4.13.1",
|
||||
"optimize-css-assets-webpack-plugin": "^5.0.3",
|
||||
"react": "16.13.0",
|
||||
"react-dom": "16.13.0"
|
||||
}
|
||||
}
|
||||
|
||||
43
pages/api/graphql.js
Normal file
43
pages/api/graphql.js
Normal file
@ -0,0 +1,43 @@
|
||||
import { gql, ApolloServer } from 'apollo-server-micro'
|
||||
|
||||
const Articles = [
|
||||
{id: 1, title: 'Article 1'},
|
||||
{id: 2, title: 'Article 2'},
|
||||
{id: 3, title: 'Article 3'},
|
||||
{id: 4, title: 'Article 4'},
|
||||
{id: 5, title: 'Article 5'}
|
||||
]
|
||||
|
||||
const typeDefs = gql`
|
||||
type Query {
|
||||
articles: [Article]
|
||||
}
|
||||
|
||||
type Article {
|
||||
id: ID
|
||||
title: String
|
||||
}
|
||||
`;
|
||||
|
||||
const resolvers = {
|
||||
Query: {
|
||||
articles: (_parent, _args, _context) => Articles
|
||||
}
|
||||
};
|
||||
|
||||
const apolloServer = new ApolloServer({
|
||||
typeDefs,
|
||||
resolvers
|
||||
});
|
||||
|
||||
const handler = apolloServer.createHandler({
|
||||
path: "/api/graphql"
|
||||
});
|
||||
|
||||
export const config = {
|
||||
api: {
|
||||
bodyParser: false
|
||||
}
|
||||
}
|
||||
|
||||
export default handler
|
||||
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 794 B After Width: | Height: | Size: 794 B |
@ -1,21 +0,0 @@
|
||||
{
|
||||
"name": "graphql-tut",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"dev": "nodemon server/app.js",
|
||||
"start": "node server/app.js"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"cors": "^2.8.5",
|
||||
"express": "^4.17.1",
|
||||
"express-graphql": "^0.9.0",
|
||||
"graphql": "^14.6.0",
|
||||
"mongoose": "^5.9.2",
|
||||
"nodemon": "^2.0.2"
|
||||
}
|
||||
}
|
||||
@ -1,35 +0,0 @@
|
||||
const graphql = require('graphql');
|
||||
|
||||
const { GraphQLObjectType, GraphQLString, GraphQLSchema, GraphQLID, GraphQLList } = graphql;
|
||||
|
||||
const Articles = [
|
||||
{id: 1, title: 'Article 1'},
|
||||
{id: 2, title: 'Article 2'},
|
||||
{id: 3, title: 'Article 3'},
|
||||
{id: 4, title: 'Article 4'},
|
||||
{id: 5, title: 'Article 5'}
|
||||
]
|
||||
|
||||
const ArticleType = new GraphQLObjectType({
|
||||
name: 'Article',
|
||||
fields: () => ({
|
||||
id: { type: GraphQLID },
|
||||
title: { type: GraphQLString }
|
||||
})
|
||||
})
|
||||
|
||||
const Query = new GraphQLObjectType({
|
||||
name: 'Query',
|
||||
fields: {
|
||||
articles: {
|
||||
type: new GraphQLList(ArticleType),
|
||||
resolve() {
|
||||
return Articles
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
module.exports = new GraphQLSchema({
|
||||
query: Query
|
||||
});
|
||||
@ -1,16 +0,0 @@
|
||||
const express = require('express')
|
||||
const graphqlHTTP = require('express-graphql')
|
||||
const schema = require('../schema/schema')
|
||||
const cors = require('cors')
|
||||
|
||||
const app = express()
|
||||
|
||||
app.use(cors())
|
||||
app.use('/graphql', graphqlHTTP({
|
||||
schema,
|
||||
graphiql: true
|
||||
}))
|
||||
|
||||
const PORT = 3005
|
||||
app.listen(PORT, () => console.log(`Server listen port ${PORT}...`))
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user