安装 graphql-tools 和 graphql-express 之后。控制台'找不到名称'AsyncIterator'中的错误消息

Posted

技术标签:

【中文标题】安装 graphql-tools 和 graphql-express 之后。控制台\'找不到名称\'AsyncIterator\'中的错误消息【英文标题】:After installing graphql-tools and graphql-express. Error message in console 'Cannot find name 'AsyncIterator'安装 graphql-tools 和 graphql-express 之后。控制台'找不到名称'AsyncIterator'中的错误消息 【发布时间】:2019-01-11 05:21:15 【问题描述】:

启动应用程序时出错

在启动应用程序时,它显示以下错误,我尝试了下面提到的在线修复,但没有一个可以请求建议和解决方案

node_modules/@types/graphql/subscription/subscribe.d.ts(17,12): error TS2304: Cannot find name 'AsyncIterator'.
node_modules/@types/graphql/subscription/subscribe.d.ts(29,12): error TS2304: Cannot find name 'AsyncIterable'.
node_modules/graphql-tools/dist/stitching/makeRemoteExecutableSchema.d.ts(3,109): error TS2304: Cannot find name 'AsyncIterator'.

根据谷歌结果尝试修复

    esnext.asynciterable 添加到tsconfig.jsonesnext 添加到tsconfig.json

但它们都没有奏效。 package.json

  "dependencies": 
    "async": "^2.6.0",
    "body-parser": "^1.18.2",
    "cookie-parser": "^1.4.3",
    "cors": "^2.8.4",
    "ejs": "^2.5.7",
    "errorhandler": "^1.5.0",
    "express": "^4.16.2",
    "express-graphql": "^0.6.12",
    "graphql": "^0.13.2",
    "graphql-tools": "^3.1.1",
    "ldapjs": "^1.0.1",
    "method-override": "^2.3.10",
    "moment": "^2.20.1",
    "mongoose": "^4.13.6",
    "morgan": "^1.9.0",
    "mysql": "^2.15.0",
    "node-schedule": "^1.3.0",
    "nodemiral": "^1.1.1",
    "pug": "^2.0.0-rc.4",
    "q": "^1.5.1",
    "request": "^2.85.0",
    "sendmail": "^1.2.0",
    "serve-favicon": "^2.4.5",
    "socket.io": "^2.0.4",
    "ts-node": "^3.3.0"
  ,
  "devDependencies": 
    "@types/async": "^2.0.47",
    "@types/body-parser": "^1.16.8",
    "@types/chai": "^4.0.8",
    "@types/chai-http": "^3.0.3",
    "@types/cookie-parser": "^1.4.1",
    "@types/cors": "^2.8.3",
    "@types/errorhandler": "0.0.32",
    "@types/ldapjs": "^1.0.3",
    "@types/lodash": "^4.14.106",
    "@types/method-override": "0.0.31",
    "@types/mocha": "^2.2.44",
    "@types/mongodb": "^2.2.16",
    "@types/mongoose": "^4.7.28",
    "@types/morgan": "^1.7.35",
    "@types/mysql": "^2.15.3",
    "@types/node-schedule": "^1.2.2",
    "@types/request": "^2.47.0",
    "@types/serve-favicon": "^2.2.30",
    "@types/socket.io": "^1.4.32",
    "chai": "^4.1.2",
    "chai-http": "^3.0.0",
    "grunt": "^1.0.1",
    "grunt-concurrent": "^2.3.1",
    "grunt-contrib-copy": "^1.0.0",
    "grunt-contrib-watch": "^1.0.0",
    "grunt-mocha-test": "^0.13.3",
    "grunt-newer": "^1.3.0",
    "grunt-nodemon": "^0.4.2",
    "grunt-ts": "^6.0.0-beta.17",
    "grunt-tslint": "^5.0.1",
    "grunt-typedoc": "^0.2.4",
    "mocha": "^4.0.1",
    "mocha-typescript": "^1.1.12",
    "nodemon": "^1.12.4",
    "tslint": "^5.8.0",
    "typescript": "^2.6.2"
  

【问题讨论】:

你可以尝试升级 TypeScript 吗?我正在使用 2.9.1,它对我有用。如果这没有帮助,如果您也可以在此处发布您的 tsconfig.json 文件,如果可能会帮助下一个响应者,那就太好了。 【参考方案1】:

然后删除节点模块:-

npm install 
npm install --save graphql-subscriptions
npm install --save @types/graphql
npm install --save @types/ws

在 tsconfig.json 中添加以下内容

"compilerOptions": 
  "lib": [
     "esnext.asynciterable"
   ]

【讨论】:

你好 Shivendra Gupta,我已经安装了这些软件包,但它仍然返回相同的错误。 删除节点模块然后执行-> npm install 你在 tsconfig.json 中添加了 "compilerOptions": "lib": [ "esnext.asynciterable" ] 吗? 嘿 Shivendra Gupta,我尝试了上述步骤,现在出现以下错误 node_modules/@types/graphql/subscription/subscribe.d.ts(36,13):错误 TS2304:找不到名称“AsyncIterator”。【参考方案2】:

遇到同样的问题,添加

"lib": ["es2017", "esnext", "esnext.asynciterable"]

对我的 tsconfig.json 没有帮助,这令人沮丧。

我提出了很多建议,最终 Shivendra 的回答为我解决了问题。希望这将有助于其他人将来来到这里。

【讨论】:

以上是关于安装 graphql-tools 和 graphql-express 之后。控制台'找不到名称'AsyncIterator'中的错误消息的主要内容,如果未能解决你的问题,请参考以下文章

“graphql-tools”中的嵌套解析器不起作用

如何使用 graphql-tools 从两个源位置加载 GraphQL 模式?

如何使用 graphql-tools 调用查询

如何使用 graphql-tools 使用或解析枚举类型?

使用 graphql-tools、apollo-link-schema 和 react-hooks 在模拟时总是返回 undefined

graphql-tools 突变解析器的参数不是 v > 0.8.0 中的对象?