问题描述
我将3.10.x版中的ParseServer(https://parseplatform.org)与附带的GraphQL端点一起使用。我使用apollo-link
从我的云代码中进行了一些查询,因此安装了graphql
模块(以及使用parse-server
的{{1}}的依赖项)。我已指定GraphQL依赖项的版本以匹配apollo-server
(v14.5.8)使用的版本。
在此配置中,一切正常。
我现在将parse-server
升级到最新版本4.3.x,并更新parse-server
以继续匹配graphql
使用的版本:v15.1.0。
服务器现在在启动时崩溃,错误为:parse-server
。
- 因此,我尝试删除
Must define Source. Received undefined.
依赖项,但仍然收到错误消息。 - 我已将
graphql
降级到先前的v14.5.8版本,由于使用了graphql
的两个不同实例,因此又出现了另一个错误。 - 我检查了跨依赖项仅使用了一个版本的GraphQL。
我检查了发生错误时加载的graphql
模块:版本v15.1.0中的graphql
。
如果需要更多详细信息,请询问!
谢谢
经历
编辑#1
Parse Server由./node_modules/graphql
包裹在群集中启动。
解析服务器初始化
throng
解析服务器配置
const restAPI = new ParseServer(config)
const graphQL = new ParseGraphQLServer(restAPI,{
graphQLPath: process.env.GRAPHQL_MOUNT || "/graphql",playgroundpath: "/playground",})
// Serve the Parse API on the /parse URL prefix
app.use(process.env.PARSE_MOUNT,restAPI.app)
graphQL.applyGraphQL(app)
完成错误堆栈
{
appName: process.env.PARSE_APP_NAME,databaseURI: process.env.DATABASE_URI,databaSEOptions: {
maxTimeMS: Number(process.env.DB_QUERY_MAX_TIME) || 30000,},cloud: `${__dirname}${cloudCode}`,appId: process.env.PARSE_APP_ID,masterKey: process.env.PARSE_MASTER_KEY,clientKey: process.env.PARSE_CLIENT_KEY,javascriptKey: process.env.PARSE_JAVASCRIPT_KEY,restAPIKey: process.env.PARSE_REST_KEY,serverURL: serverURL,publicServerURL: serverURL,allowClientClassCreation: process.env.ALLOW_CLIENT_CLASS_CREATION === 'true',filesAdapter: new S3Adapter(
process.env.S3_BUCKET,{
bucketPrefix: process.env.S3_BUCKET_PREFIX,directAccess: true
}),verifyUserEmails: false,emailAdapter: MailAdapter(),cacheAdapter: process.env.REdis_PARSE_CACHE_URL
? new RedisCacheAdapter({ url: process.env.REdis_PARSE_CACHE_URL })
: null,liveQuery: {
classNames: ["SomeClass"],redisURL: process.env.REdis_LIVE_QUERIES_SERVER_URL
},}
解决方法
经过数周的深入研究,建议我尝试使用npm
而不是yarn
。因此,我尝试了一下,整个过程再次正常运行。
问题出在锁定文件中:将其删除后,甚至返回yarn
,问题已得到解决。
因此,在这种情况下,请尝试删除node_modules
文件夹并锁定文件,然后重新运行yarn
或npm install
。这应该可以解决问题。
感谢Parse核心贡献者davimacedo帮助我解决了这个问题!