prisma.yml 无法找到
Posted
技术标签:
【中文标题】prisma.yml 无法找到【英文标题】:prisma.yml could not be found 【发布时间】:2020-04-13 08:33:12 【问题描述】:我正在尝试为我的 prisma 数据模型生成架构,同时使用机密来限制 prisma 访问。运行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());
【问题讨论】:
我最终在 package.json 命令中使用了env-cmd
,它也解决了这个问题,以防以后有人遇到这个问题。
【参考方案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 文件(PRISMA_CONFIG
中的managementApiSecret
)限制对端点管理功能的访问。然后,当您运行 prisma deploy
之类的命令时,您需要通过 --env-file
标志传递适当的环境变量,或者通过在应用程序目录的根目录中有一个 dotenv 文件(您还需要安装 dotenv
包package.json
.
另一种保护端点的方法是完全禁用 GraphQL Playground。我相信 Apollo Server 在 NODE_ENV
设置为生产时会自动执行此操作,尽管您可以通过以下方式明确执行此操作:
const server = new ApolloServer(
context:
prisma,
,
resolvers,
typeDefs: schema,
playground: false, // <- Here
);
对不起,我不认为这直接回答了你的问题,但它可能对任何一种方式都有帮助。
【讨论】:
以上是关于prisma.yml 无法找到的主要内容,如果未能解决你的问题,请参考以下文章
Prisma deploy 报错 GraphQL Tutorial
生成 Prisma Graphql Schema 时使用 generate 和 post deploy 钩子之间的区别?