首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到prisma.yml

找不到prisma.yml
EN

Stack Overflow用户
提问于 2019-12-20 22:07:39
回答 1查看 1.6K关注 0票数 2

我试图为我的prisma数据模型生成模式,同时使用机密限制prisma访问。运行prisma deleteprisma deploy后,运行命令graphql get-schema -p prisma并获得以下错误消息:

找不到

✖prisma/prma.yml。

我的.graphqlconfig做错了什么,或者我是如何列出我的prisma.yml的?谢谢。

.graphqlconfig:

代码语言:javascript
复制
{
  "projects": {
    "prisma": {
      "schemaPath": "generated/prisma.graphql",
      "extensions": {
        "prisma": "prisma/prisma.yml",
        "endpoints": {
          "default": "http://localhost:4466"
        }
      }
    }
  }
}

prisma/prisma.yml:

代码语言:javascript
复制
endpoint: http://localhost:4466
datamodel: datamodel.prisma
secret: 'secretFoo'

index.js:

代码语言:javascript
复制
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());
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-29 20:34:01

通过将以下内容添加到文件中,可以直接从prisma.yml文件生成模式:

代码语言:javascript
复制
generate:
  - generator: graphql-schema
    output: ./generated/prisma.graphql

然后您可以将您的.graphqlconfig引用到生成的文件:

代码语言:javascript
复制
projects:
  prisma:
    schemaPath: generated/prisma.graphql
    extensions:
      endpoints:
        dev: http://localhost:4466

通常,您将通过文件(managementApiSecret in PRISMA_CONFIG)限制对端点的管理功能的访问。然后,当您运行像prisma deploy这样的命令时,您需要通过--env-file标志或者在应用程序目录根目录中有一个dotenv文件来传递适当的环境变量(您还需要在package.json中安装dotenv包。

另一种保护端点的方法是完全禁用GraphQL游乐场。我相信,当NODE_ENV设置为生产时,阿波罗服务器会自动完成此操作,尽管您可以使用以下方法显式地完成此操作:

代码语言:javascript
复制
const server = new ApolloServer({
  context: {
    prisma,
  },
  resolvers,
  typeDefs: schema,
  playground: false, // <- Here
});

很抱歉,我不认为这直接回答了你的问题,但这两者都有帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59431840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档