prisma.yml не может быть найден
Я пытаюсь создать схему для своей модели данных призмы, в то же время используя секреты для ограничения доступа к призме. После запускаprisma delete
а также prisma deploy
, Я запускаю команду graphql get-schema -p prisma
и получите следующее сообщение об ошибке:
✖ prisma/prisma.yml не найден.
Я что-то не так делаю в своем .graphqlconfig
или как я размещаю свой prisma.yml? Спасибо.
.graphqlconfig:
{
"projects": {
"prisma": {
"schemaPath": "generated/prisma.graphql",
"extensions": {
"prisma": "prisma/prisma.yml",
"endpoints": {
"default": "http://localhost:4466"
}
}
}
}
}
prisma/prisma.yml:
endpoint: http://localhost:4466
datamodel: datamodel.prisma
secret: 'secretFoo'
index.js:
import http from 'http';
import express from 'express';
import { ApolloServer } from 'apollo-server-express';
import resolvers from './resolvers';
import schema from './generated/prisma.graphql';
import { Prisma } from 'prisma-binding';
const prisma = new Prisma({
endpoint: 'http://localhost:4466',
secret: 'secretFoo',
typeDefs: 'server/generated/prisma.graphql',
});
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());
}
1 ответ
Вы можете создать схему прямо из вашего prisma.yml
файл, добавив в файл следующее:
generate:
- generator: graphql-schema
output: ./generated/prisma.graphql
Тогда вы можете направить свой .graphqlconfig
в сгенерированный файл:
projects:
prisma:
schemaPath: generated/prisma.graphql
extensions:
endpoints:
dev: http://localhost:4466
Обычно вы ограничиваете доступ к функциям управления вашей конечной точки через файл Prisma docker-compose (managementApiSecret
в PRISMA_CONFIG
). Затем, когда вы запускаете такие команды, какprisma deploy
вам нужно будет передать соответствующие переменные среды через --env-file
flag, или имея файл dotenv в корне каталога вашего приложения (вам также понадобится dotenv
пакет установлен в package.json
.
Другой способ обезопасить вашу конечную точку - полностью отключить GraphQL Playground. Я считаю, что Apollo Server делает это автоматически, когдаNODE_ENV
установлен на производство, хотя вы можете сделать это явно с помощью:
const server = new ApolloServer({
context: {
prisma,
},
resolvers,
typeDefs: schema,
playground: false, // <- Here
});
Извините, я не думаю, что это прямо ответило на ваш вопрос, но это может помочь в любом случае.