将Parse Server从v3升级到v4会触发错误“ GraphQL:必须提供源代码”

问题描述

我将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文件夹并锁定文件,然后重新运行yarnnpm install。这应该可以解决问题。

解析社区论坛:https://community.parseplatform.org/t/parse-4-2-startup-error-must-provide-source-received-undefined/278/11

感谢Parse核心贡献者davimacedo帮助我解决了这个问题!