Graphql 找不到prisma.yml

Graphql 找不到prisma.yml,graphql,apollo,prisma,prisma-binding,Graphql,Apollo,Prisma,Prisma Binding,我试图为我的prisma数据模型生成模式,同时使用机密限制prisma访问。运行prisma delete和prisma deploy后,我运行命令graphql get schema-p prisma,并获得以下错误消息: ✖ 找不到prisma/prisma.yml 我的.graphqlconfig中是否有错误,或者我是如何列出prisma.yml的?谢谢 .graphqlconfig: { "projects": { "prisma": { "schemaPath"

我试图为我的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"
        }
      }
    }
  }
}
endpoint: http://localhost:4466
datamodel: datamodel.prisma
secret: 'secretFoo'
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/prisma.yml:

{
  "projects": {
    "prisma": {
      "schemaPath": "generated/prisma.graphql",
      "extensions": {
        "prisma": "prisma/prisma.yml",
        "endpoints": {
          "default": "http://localhost:4466"
        }
      }
    }
  }
}
endpoint: http://localhost:4466
datamodel: datamodel.prisma
secret: 'secretFoo'
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());
}
index.js:

{
  "projects": {
    "prisma": {
      "schemaPath": "generated/prisma.graphql",
      "extensions": {
        "prisma": "prisma/prisma.yml",
        "endpoints": {
          "default": "http://localhost:4466"
        }
      }
    }
  }
}
endpoint: http://localhost:4466
datamodel: datamodel.prisma
secret: 'secretFoo'
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文件(
Prisma_CONFIG
中的
managementApiSecret
)限制对端点管理功能的访问。然后,当您运行类似于
prisma deploy
的命令时,您需要通过
--env file
标志传递适当的环境变量,或者在应用程序目录的根目录中拥有一个dotenv文件(您还需要在
package.json
中安装
dotenv
包)

另一种保护端点的方法是完全禁用GraphQL游乐场。我相信Apollo Server会在
NODE_ENV
设置为production时自动执行此操作,尽管您可以通过以下方式显式执行此操作:

const server=新服务器({
背景:{
普里斯玛,
},
解析器,
typeDefs:schema,

游乐场:false,//我在package.json命令中使用了
env cmd
,它也解决了这个问题,以防将来有人遇到这个问题。