首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >graphql查询的typescript类型声明出错

graphql查询的typescript类型声明出错
EN

Stack Overflow用户
提问于 2021-04-05 09:08:01
回答 1查看 435关注 0票数 0

我用的是威士( Nuxt.js )+阿波罗。

现在,我正在努力将Typescript加入到这个项目中,尤其是围绕Graphql。我读取了这个article并生成了类型文件,但它不工作。我无法在存储目录中的.ts文件中导入查询。

生成的类型文件。(~/graphql/types.d.ts)

代码语言:javascript
复制
declare module '*/activate.gql' {
  import { DocumentNode } from 'graphql'; <- another problem: ts says "error TS2307: Cannot find module 'graphql'"
  const defaultDocument: DocumentNode;
  

  export default defaultDocument;
}

这由codegen.yml生成

代码语言:javascript
复制
schema: http://localhost:3000/graphql
generates:
  ./graphql/types.d.ts:
    documents: ./graphql/**/*.gql
    plugins:
      - typescript
      - typescript-graphql-files-modules

我无法在存储中导入activate查询。(~/store/user.ts)

代码语言:javascript
复制
import activate from '~/graphql/mutations/activate.gql'; <- "error TS2307: Cannot find module '~/graphql/mutations/auth/activate.gql'"

根据上面的文档,这将会起作用...

enter image description here

目录结构在这里。

代码语言:javascript
复制
- graphql
  |- queries
  |- mutations
     |- activate.gql
  |- types.d.ts

- store
  |- user.ts

- codegen.yml

package.json的一部分

代码语言:javascript
复制
{
  "dependencies": {
    "@nuxt/types": "^2.15.4",
    "@nuxtjs/apollo": "^4.0.1-rc.3",
    "@nuxtjs/axios": "^5.12.2",
    "@nuxtjs/dotenv": "^1.4.1",
    "@nuxtjs/pwa": "^3.2.2",
    "@nuxtjs/sitemap": "^2.4.0",
    "@stripe/stripe-js": "^1.10.0",
    "cookie-universal-nuxt": "^2.1.4",
    "graphql": "^15.5.0",
    "graphql-tag": "^2.11.0",
    "jquery": "^3.5.1",
    "lodash": "^4.17.20",
    "nuxt": "^2.14.0",
    "nuxt-basic-auth-module": "^1.3.3",
    "nuxt-jsonld": "^1.5.0",
    "nuxt-typed-vuex": "^0.1.22",
    "redirect-ssl": "^2.0.0",
    "vee-validate": "^3.4.5",
    "vue": "^2.6.12",
    "vue-infinite-loading": "^2.4.5",
    "vue-lazyload": "^1.3.3",
    "vue-slick": "^1.1.15",
    "vue-template-compiler": "^2.6.12"
  },
  "devDependencies": {
    "@graphql-codegen/cli": "^1.21.3",
    "@graphql-codegen/typescript": "^1.21.1",
    "@graphql-codegen/typescript-graphql-files-modules": "^1.18.1",
    "@graphql-codegen/typescript-operations": "^1.17.15",
    "@nuxtjs/google-fonts": "^1.2.0",
    "@vue/test-utils": "^1.0.3",
    "babel-core": "7.0.0-bridge.0",
    "babel-eslint": "^10.1.0",
    "babel-jest": "^26.1.0",
    "eslint": "^7.9.0",
    "eslint-config-prettier": "^6.11.0",
    "eslint-loader": "^4.0.2",
    "eslint-plugin-prettier": "^3.1.4",
    "eslint-plugin-vue": "^6.2.2",
    "husky": "^4.3.0",
    "jest": "^26.1.0",
    "lint-staged": "^10.4.0",
    "node-sass": "^4.14.1",
    "prettier": "^2.1.2",
    "sass-loader": "^9.0.3",
    "vue-jest": "^3.0.4"
  },
}

如果你能回答我,我将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-04-06 14:43:10

我拿到了!我不确定这个解决方案是不是最好的,但是,通过向global.d.ts生成查询声明,我可以从任何地方导入查询,而不会出错!

如果您知道更好的解决方案,请通知我。

codegen.yml

代码语言:javascript
复制
schema: http://localhost:3000/graphql
generates:
  ./graphql/types.d.ts:
    documents: ./graphql/**/*.gql
    plugins:
      - typescript
  ./global.d.ts:
    documents: ./graphql/**/*.gql
    plugins: 
      - typescript-graphql-files-modules
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66947199

复制
相关文章

相似问题

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