r1tsuu / payload-enchants

Payload 3.0 enchantment packages
MIT License
83 stars 7 forks source link

traverseFields fails with TypeError: Cannot use 'in' operator to search for 'root' in null for lexical richtext Fields #64

Closed faxg closed 1 month ago

faxg commented 1 month ago

Translator seems to choke somehow when using nested lexical richText fields inside of Tabs. Only thing i noticed is that once the "from" locale has a non-null value for the richText lexical field, it seems to work,

[19:45:44] ERROR: TypeError: Cannot use 'in' operator to search for 'root' in null at eval (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/traverseFields.js:148:42) at Array.forEach (<anonymous>) at traverseFields (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/traverseFields.js:16:12) at eval (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/traverseFields.js:106:17) at Array.forEach (<anonymous>) at traverseFields (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/traverseFields.js:16:12) at eval (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/traverseFields.js:24:21) at Array.forEach (<anonymous>) at eval (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/traverseFields.js:19:28) at Array.forEach (<anonymous>) at traverseFields (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/traverseFields.js:16:12) at translateOperation (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/operation.js:40:68) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async Object.translateEndpoint [as handler] (webpack-internal:///(rsc)/./node_modules/.pnpm/@payload-enchants+translator@1.1.30_@payloadcms+translations@3.0.0-beta.39_@payloadcms+ui@3.0_xtbks235xned2z5xhtjfa67fa4/node_modules/@payload-enchants/translator/dist/translate/endpoint.js:13:20) at async eval (webpack-internal:///(rsc)/./node_modules/.pnpm/@payloadcms+next@3.0.0-beta.39_@types+react@18.3.3_graphql@16.8.1_monaco-editor@0.49.0_next@1_pfszsfkw2eyeo7aevrugd5uhta/node_modules/@payloadcms/next/dist/routes/rest/index.js:546:44) at async /workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:63352 at async eP.execute (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:54549) at async eP.handle (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/compiled/next-server/app-route.runtime.dev.js:6:64693) at async doRender (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/base-server.js:1419:42) at async responseGenerator (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/base-server.js:1640:40) at async DevServer.renderToResponseWithComponentsImpl (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/base-server.js:1665:28) at async DevServer.renderPageComponent (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/base-server.js:1978:24) at async DevServer.renderToResponseImpl (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/base-server.js:2016:32) at async DevServer.pipeImpl (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/base-server.js:908:25) at async NextNodeServer.handleCatchallRenderRequest (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/next-server.js:273:17) at async DevServer.handleRequestImpl (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/base-server.js:804:17) at async /workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/dev/next-dev-server.js:339:20 at async Span.traceAsyncFn (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/trace/trace.js:157:20) at async DevServer.handleRequest (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/dev/next-dev-server.js:336:24) at async invokeRender (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/lib/router-server.js:175:21) at async handleRequest (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/lib/router-server.js:354:24) at async requestHandlerImpl (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/lib/router-server.js:378:13) at async Server.requestListener (/workspaces/summed-cms-payload-plugin/node_modules/.pnpm/next@15.0.0-rc.0_react-dom@19.0.0-rc-f994737d14-20240522_react@19.0.0-rc-f994737d14-20240522/node_modules/next/dist/server/lib/start-server.js:142:13)

lynndylanhurley commented 1 month ago

i just hit this same issue. i think the problem is here: https://github.com/r1tsuu/payload-enchants/blob/c7078512653f870fcc6340d15a115d92aeeae19e/packages/translator/src/translate/traverseFields.ts#L208

and I think there needs to be a guard clause in the case that the value is empty. i.e.

siblingDataTranslated[field.name] = richTextDataFrom;
if (!richTextDataFrom) {
  break;
}
lynndylanhurley commented 1 month ago

Just pushed a PR that should resolve this.