运行 带有 npm 的 postgraphile
run postgraphile with npm
我正在开发一个 React 应用程序,并将 apollo 和 postgraphile 用于 graphql。我目前必须打开两个终端 windows,一个 运行ning
npm start
用于 react-dev 服务器,一个 运行ning
postgraphile -c 'postgresstring'
对于 postgraphile 服务器
执行此操作时一切正常,但我将项目转交给我团队的其他成员,希望他们能够简单地 运行
npm start
同时启动 React 和 postgraphile 服务器。我尝试在 npm start 上同时使用 npm 包和 npm-start-all 到 运行 两个脚本,但每次我使用 npm 到 运行 postgraphile 命令时,我在尝试实际查询 graphql 时遇到错误graphiql 中的服务器说我有重复的 graphql 实例 运行ning。即使我将 postgraphile 命令放在它自己的 npm 命令中,如
,也会发生这种情况
"graphql": "postgraphile -c 'postgresstring'"
和运行
npm run graphql
错误信息:
Error: Cannot use GraphQLSchema "[object Object]" from another module or realm.
Ensure that there is only one instance of "graphql" in the node_modules
directory. If different versions of "graphql" are the dependencies of
other relied on modules, use "resolutions" to ensure only one version
is installed.
https://yarnpkg.com/en/docs/selective-version-resolutions
Duplicate "graphql" modules cannot be used at the same time since different
versions may have different capabilities and behavior. The data from one
version used in the function from another could produce confusing and
spurious results.
我如何通过 npm 运行 运行 postgraphile 以便我可以同时使用或 npm-运行-all 到 运行 它们都用一个命令?请注意,仅使用 "node scripts/start.js && postgraphile -c 'postgresstring'" 是行不通的,因为它会等待 start.js 服务器在 运行ning postgraphile 之前终止。
对于在 Node.js 生态系统中使用 graphql
的人来说,这是一个普遍的痛苦。解决这个问题的方法是在你的 package.json
中添加一个 "resolutions"
条目,通知 yarn 它应该尝试只安装一个版本 graphql@0.12.x
,只要该版本满足支持的 GraphQL 范围而不是安装多个版本。为此,请将如下内容添加到您的 package.json
文件中:
"resolutions": {
"graphql": "0.12.x"
}
然后再次 运行 yarn
,您应该注意到您的 yarn.lock
文件已更新为仅引用 graphql
.
的一个版本
说明
您 运行 的第一个 postgraphile
命令执行全局安装的 postgraphile
命令(通过 npm install -g postgraphile
或 yarn global add postgraphile
安装);它不会遇到这个问题,因为它只有自己的依赖关系并且它们不会冲突。
但是对于 npm run
命令,npm 会自动将您的本地 ./node_modules/.bin/
文件夹添加到 $PATH
的开头,因此您的 postgraphile
的本地副本(通过 [ 安装=27=]) 正在执行。 (这就是您想要的行为!)您似乎还安装了依赖于 graphql
的其他东西(也许是 Apollo Client?)并且现在您的 [=30] 中的某处有两个版本的 graphql
=] 文件夹,每个都在不同的位置,并且 postgraphile
正在选择与 graphile-build
不同的版本,这就是导致问题的原因。
PostGraphiling 快乐!
我正在开发一个 React 应用程序,并将 apollo 和 postgraphile 用于 graphql。我目前必须打开两个终端 windows,一个 运行ning
npm start
用于 react-dev 服务器,一个 运行ning
postgraphile -c 'postgresstring'
对于 postgraphile 服务器
执行此操作时一切正常,但我将项目转交给我团队的其他成员,希望他们能够简单地 运行
npm start
同时启动 React 和 postgraphile 服务器。我尝试在 npm start 上同时使用 npm 包和 npm-start-all 到 运行 两个脚本,但每次我使用 npm 到 运行 postgraphile 命令时,我在尝试实际查询 graphql 时遇到错误graphiql 中的服务器说我有重复的 graphql 实例 运行ning。即使我将 postgraphile 命令放在它自己的 npm 命令中,如
,也会发生这种情况"graphql": "postgraphile -c 'postgresstring'"
和运行
npm run graphql
错误信息:
Error: Cannot use GraphQLSchema "[object Object]" from another module or realm.
Ensure that there is only one instance of "graphql" in the node_modules
directory. If different versions of "graphql" are the dependencies of
other relied on modules, use "resolutions" to ensure only one version
is installed.
https://yarnpkg.com/en/docs/selective-version-resolutions
Duplicate "graphql" modules cannot be used at the same time since different
versions may have different capabilities and behavior. The data from one
version used in the function from another could produce confusing and
spurious results.
我如何通过 npm 运行 运行 postgraphile 以便我可以同时使用或 npm-运行-all 到 运行 它们都用一个命令?请注意,仅使用 "node scripts/start.js && postgraphile -c 'postgresstring'" 是行不通的,因为它会等待 start.js 服务器在 运行ning postgraphile 之前终止。
对于在 Node.js 生态系统中使用 graphql
的人来说,这是一个普遍的痛苦。解决这个问题的方法是在你的 package.json
中添加一个 "resolutions"
条目,通知 yarn 它应该尝试只安装一个版本 graphql@0.12.x
,只要该版本满足支持的 GraphQL 范围而不是安装多个版本。为此,请将如下内容添加到您的 package.json
文件中:
"resolutions": {
"graphql": "0.12.x"
}
然后再次 运行 yarn
,您应该注意到您的 yarn.lock
文件已更新为仅引用 graphql
.
说明
您 运行 的第一个 postgraphile
命令执行全局安装的 postgraphile
命令(通过 npm install -g postgraphile
或 yarn global add postgraphile
安装);它不会遇到这个问题,因为它只有自己的依赖关系并且它们不会冲突。
但是对于 npm run
命令,npm 会自动将您的本地 ./node_modules/.bin/
文件夹添加到 $PATH
的开头,因此您的 postgraphile
的本地副本(通过 [ 安装=27=]) 正在执行。 (这就是您想要的行为!)您似乎还安装了依赖于 graphql
的其他东西(也许是 Apollo Client?)并且现在您的 [=30] 中的某处有两个版本的 graphql
=] 文件夹,每个都在不同的位置,并且 postgraphile
正在选择与 graphile-build
不同的版本,这就是导致问题的原因。
PostGraphiling 快乐!