prisma.yml 找不到
prisma.yml could not be found
我正在尝试为我的 Prisma 数据模型生成架构,同时使用机密来限制 Prisma 访问。在 运行 宁 prisma delete
和 prisma deploy
之后,我 运行 命令 graphql get-schema -p prisma
并得到以下错误消息:
✖ prisma/prisma.yml could not be found.
我在我的 .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());
}
您可以直接从 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
in PRISMA_CONFIG
)限制对端点管理功能的访问。然后,当您 运行 命令如 prisma deploy
时,您需要通过 --env-file
标志或通过在应用程序目录的根目录中放置一个 dotenv 文件来传递适当的环境变量(您也需要在 package.json
.
中安装 dotenv
软件包
另一种保护端点的方法是完全禁用 GraphQL Playground。我相信当 NODE_ENV
设置为生产时,Apollo Server 会自动执行此操作,尽管您可以通过以下方式明确执行此操作:
const server = new ApolloServer({
context: {
prisma,
},
resolvers,
typeDefs: schema,
playground: false, // <- Here
});
抱歉,我不认为这直接回答了您的问题,但它可能对任何一种方式都有帮助。
我正在尝试为我的 Prisma 数据模型生成架构,同时使用机密来限制 Prisma 访问。在 运行 宁 prisma delete
和 prisma deploy
之后,我 运行 命令 graphql get-schema -p prisma
并得到以下错误消息:
✖ prisma/prisma.yml could not be found.
我在我的 .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());
}
您可以直接从 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
in PRISMA_CONFIG
)限制对端点管理功能的访问。然后,当您 运行 命令如 prisma deploy
时,您需要通过 --env-file
标志或通过在应用程序目录的根目录中放置一个 dotenv 文件来传递适当的环境变量(您也需要在 package.json
.
dotenv
软件包
另一种保护端点的方法是完全禁用 GraphQL Playground。我相信当 NODE_ENV
设置为生产时,Apollo Server 会自动执行此操作,尽管您可以通过以下方式明确执行此操作:
const server = new ApolloServer({
context: {
prisma,
},
resolvers,
typeDefs: schema,
playground: false, // <- Here
});
抱歉,我不认为这直接回答了您的问题,但它可能对任何一种方式都有帮助。