Не удается загрузить схему GraphQL с конечной точки - PullRequest
0 голосов
/ 26 января 2020

В настоящее время я использую graphql-cli из Prisma для загрузки схемы из конечной точки. Но даже после развертывания изменений, внесенных в мою схему, которая успешно разворачивается, всякий раз, когда я пытаюсь загрузить схему, я получаю project prisma - No changes. И сгенерированный prisma.graphql остается без изменений.

Я использую следующую команду для загрузки схемы:

graphql get-schema -p prisma --dotenv config/dev.env

dev.env просто для получения PRISMA_ENDPOINT=http://localhost:4466/ переменной среды.

Я попытался сгенерировать prisma.graphql другим способом, указав в prisma.yml следующее:

endpoint: ${env:PRISMA_ENDPOINT}
datamodel: datamodel.prisma
generate:
   - generator: graphql-schema
     output: ./generated/

И выполнив prisma generate, но я получаю ошибку:

▸ [ПРЕДУПРЕЖДЕНИЕ] в /Users/F/Documents/d/server/prisma/prisma.yml: допустимая переменная среды ▸, удовлетворяющая объявлению 'env: PRISMA_ENDPOINT', не найдена.

Пробовал останавливать и воссоздавать Docker, а также удалять node_module и переустанавливать, но безрезультатно.

My package.json:

{
  "name": "graphql-basics",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node dist/index.js",
    "heroku-postbuild": "babel src --out-dir dist --copy-files",
    "dev": "env-cmd ./config/dev.env nodemon src/index.js --ext js,graphql --exec babel-node",
    "test": "env-cmd ./config/test.env jest --watch --runInBand",
    "get-schema": "graphql get-schema -p prisma --dotenv config/dev.env"
  },
  "jest": {
    "globalSetup": "./tests/jest/globalSetup.js",
    "globalTeardown": "./tests/jest/globalTeardown.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@babel/polyfill": "^7.0.0",
    "babel-cli": "^6.26.0",
    "babel-plugin-transform-object-rest-spread": "^6.26.0",
    "babel-preset-env": "^1.7.0",
    "babel-register": "^6.26.0",
    "bcryptjs": "^2.4.3",
    "cross-fetch": "^2.2.2",
    "env-cmd": "^8.0.2",
    "google-auth-library": "^4.2.3",
    "graphql-cli": "^3.0.14",    
    "graphql-yoga": "^1.14.10",
    "jsonwebtoken": "^8.3.0",
    "prisma-binding": "^2.1.1"
  },
  "devDependencies": {
    "babel-plugin-transform-es2015-destructuring": "^6.23.0",
    "jest": "^23.5.0",
    "nodemon": "^1.17.5"
  },
  "resolutions": {
    "graphql": "^14.5.8"
  }
}

1 Ответ

0 голосов
/ 27 января 2020

Чтобы исправить ошибку «не удалось найти переменную, удовлетворяющую объявлению env: PRISMA_ENDPOINT». при вызове prisma generate вы должны либо установить переменную PRISMA_ENDPOINT вручную, либо загрузить ее через dotenv. Например, вы можете запустить npx dotenv -- prisma generate для загрузки переменных env из файла .env.

Чтобы загрузить схему из конечной точки через graphql get-schema, убедитесь, что вы правильно настроили .graphqlconfig.yml и правильно проект. Пример конфигурации для проекта призмы может выглядеть следующим образом:

projects:
  prisma:
    schemaPath: 'src/schema.graphql'
    extensions:
      endpoints:
        default: 'http://localhost:4000/graphql'
  database:
    schemaPath: 'src/generated/prisma.graphql'
    extensions:
      prisma: 'database/prisma.yml'
      endpoints:
        default: 'http://localhost:4466'
...