imports are not working

This commit is contained in:
Moriz Wahl 2023-12-01 17:06:11 +01:00
parent 15d30d2f56
commit 881158c11e
5 changed files with 65 additions and 41 deletions

67
package-lock.json generated
View File

@ -11,6 +11,7 @@
"dependencies": { "dependencies": {
"apollo-server-express": "^3.13.0", "apollo-server-express": "^3.13.0",
"graphql": "^15.3.0", "graphql": "^15.3.0",
"reflect-metadata": "^0.1.13",
"type-graphql": "^1.1.1" "type-graphql": "^1.1.1"
}, },
"devDependencies": { "devDependencies": {
@ -40,6 +41,7 @@
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"tsc": "^2.0.4", "tsc": "^2.0.4",
"tsc-watch": "^6.0.4", "tsc-watch": "^6.0.4",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.3.2" "typescript": "^5.3.2"
} }
}, },
@ -2961,6 +2963,18 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/eslint-plugin-import/node_modules/json5": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==",
"dev": true,
"dependencies": {
"minimist": "^1.2.0"
},
"bin": {
"json5": "lib/cli.js"
}
},
"node_modules/eslint-plugin-import/node_modules/ms": { "node_modules/eslint-plugin-import/node_modules/ms": {
"version": "2.1.3", "version": "2.1.3",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
@ -2976,6 +2990,18 @@
"semver": "bin/semver.js" "semver": "bin/semver.js"
} }
}, },
"node_modules/eslint-plugin-import/node_modules/tsconfig-paths": {
"version": "3.14.2",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz",
"integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==",
"dev": true,
"dependencies": {
"@types/json5": "^0.0.29",
"json5": "^1.0.2",
"minimist": "^1.2.6",
"strip-bom": "^3.0.0"
}
},
"node_modules/eslint-plugin-json": { "node_modules/eslint-plugin-json": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-3.1.0.tgz", "resolved": "https://registry.npmjs.org/eslint-plugin-json/-/eslint-plugin-json-3.1.0.tgz",
@ -4473,15 +4499,15 @@
"dev": true "dev": true
}, },
"node_modules/json5": { "node_modules/json5": {
"version": "1.0.2", "version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true, "dev": true,
"dependencies": {
"minimist": "^1.2.0"
},
"bin": { "bin": {
"json5": "lib/cli.js" "json5": "lib/cli.js"
},
"engines": {
"node": ">=6"
} }
}, },
"node_modules/jsonc-parser": { "node_modules/jsonc-parser": {
@ -6950,6 +6976,11 @@
"node": ">=8.10.0" "node": ">=8.10.0"
} }
}, },
"node_modules/reflect-metadata": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz",
"integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg=="
},
"node_modules/regexp-tree": { "node_modules/regexp-tree": {
"version": "0.1.27", "version": "0.1.27",
"resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz",
@ -12756,15 +12787,17 @@
} }
}, },
"node_modules/tsconfig-paths": { "node_modules/tsconfig-paths": {
"version": "3.14.2", "version": "4.2.0",
"resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-4.2.0.tgz",
"integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "integrity": "sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@types/json5": "^0.0.29", "json5": "^2.2.2",
"json5": "^1.0.2",
"minimist": "^1.2.6", "minimist": "^1.2.6",
"strip-bom": "^3.0.0" "strip-bom": "^3.0.0"
},
"engines": {
"node": ">=6"
} }
}, },
"node_modules/tslib": { "node_modules/tslib": {
@ -13009,18 +13042,6 @@
"url": "https://github.com/chalk/chalk?sponsor=1" "url": "https://github.com/chalk/chalk?sponsor=1"
} }
}, },
"node_modules/unified-args/node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
"integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
"bin": {
"json5": "lib/cli.js"
},
"engines": {
"node": ">=6"
}
},
"node_modules/unified-args/node_modules/strip-ansi": { "node_modules/unified-args/node_modules/strip-ansi": {
"version": "7.1.0", "version": "7.1.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",

View File

@ -2,7 +2,7 @@
"name": "boilerplate-backend", "name": "boilerplate-backend",
"version": "1.0.0", "version": "1.0.0",
"description": "The IT4C Boilerplate for backends", "description": "The IT4C Boilerplate for backends",
"main": "build/index.ts", "main": "build/index.js",
"type": "module", "type": "module",
"repository": { "repository": {
"type": "git", "type": "git",
@ -25,6 +25,7 @@
"dependencies": { "dependencies": {
"apollo-server-express": "^3.13.0", "apollo-server-express": "^3.13.0",
"graphql": "^15.3.0", "graphql": "^15.3.0",
"reflect-metadata": "^0.1.13",
"type-graphql": "^1.1.1" "type-graphql": "^1.1.1"
}, },
"devDependencies": { "devDependencies": {
@ -54,6 +55,7 @@
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"tsc": "^2.0.4", "tsc": "^2.0.4",
"tsc-watch": "^6.0.4", "tsc-watch": "^6.0.4",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.3.2" "typescript": "^5.3.2"
}, },
"imports": { "imports": {

View File

@ -1,11 +1,15 @@
import path from 'path' import path from 'path'
import { fileURLToPath } from 'url'
import { GraphQLSchema } from 'graphql' import { GraphQLSchema } from 'graphql'
import { buildSchema } from 'type-graphql' import { buildSchema } from 'type-graphql'
const __filename = fileURLToPath(import.meta.url)
const __dirname = path.dirname(__filename)
export const schema = async (): Promise<GraphQLSchema> => { export const schema = async (): Promise<GraphQLSchema> => {
return buildSchema({ return buildSchema({
resolvers: [path.join(__dirname, 'resolvers', `!(*.spec).{ts}`)], resolvers: [path.join(__dirname, 'resolvers', `!(*.spec).{ts,js}`)],
validate: { validate: {
validationError: { target: false }, validationError: { target: false },
skipMissingProperties: true, skipMissingProperties: true,

View File

@ -1,25 +1,17 @@
import { ApolloServer, gql } from 'apollo-server-express' // eslint-disable-next-line import/no-unassigned-import
import 'reflect-metadata'
import { ApolloServer } from 'apollo-server-express'
import express from 'express' import express from 'express'
const typeDefs = gql` import { schema } from './graphql/schema'
type Query {
hello: String
}
`
const resolvers = {
Query: {
hello: () => 'Hello world!',
},
}
async function listen(port: number) { async function listen(port: number) {
// eslint-disable-next-line @typescript-eslint/no-explicit-any // eslint-disable-next-line @typescript-eslint/no-explicit-any
const app: any = express() const app: any = express()
const server = new ApolloServer({ const server = new ApolloServer({
typeDefs, schema: await schema(),
resolvers,
}) })
await server.start() await server.start()

View File

@ -1,10 +1,12 @@
{ {
"compilerOptions": { "compilerOptions": {
"target": "es2021", "target": "ESNext",
"experimentalDecorators": true, "experimentalDecorators": true,
"emitDecoratorMetadata": true, "emitDecoratorMetadata": true,
"module": "ES2020", "module": "ESNext",
"moduleResolution": "node", "moduleResolution": "node",
"baseUrl": ".",
"lib": ["ESNext"],
"paths": { "paths": {
"#types/*": ["./src/graphql/types/*"] "#types/*": ["./src/graphql/types/*"]
}, },
@ -12,5 +14,8 @@
"esModuleInterop": true, "esModuleInterop": true,
"strict": true, "strict": true,
"skipLibCheck": true "skipLibCheck": true
},
"ts-node": {
"experimentalSpecifierResolution": "node"
} }
} }