Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG] - V2 - <Textarea /> throws error when rendered in SSR #1160

Closed
Tronikelis opened this issue Jun 18, 2023 · 3 comments
Closed

[BUG] - V2 - <Textarea /> throws error when rendered in SSR #1160

Tronikelis opened this issue Jun 18, 2023 · 3 comments
Labels
🐛 Type: Bug Something isn't working

Comments

@Tronikelis
Copy link

Tronikelis commented Jun 18, 2023

Describe the bug

next-ui version: 0.0.0-dev-v2-20230617142344

When trying to SSR the <Textarea /> component an error is thrown:

Warning: React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: object.
    at file:///X:/coding/coding-issues/nextui-textarea-issue/node_modules/@nextui-org/input/dist/chunk-HT5PSXGZ.mjs:12:6
    at div
    at Home
    at div
    at $f57aed4a881a3485$var$OverlayContainerDOM (file:///X:/coding/coding-issues/nextui-textarea-issue/node_modules/@react-aria/overlays/dist/import.mjs:881:55)
    at $f57aed4a881a3485$export$178405afcd8c5eb (file:///X:/coding/coding-issues/nextui-textarea-issue/node_modules/@react-aria/overlays/dist/import.mjs:848:21) 
    at $f57aed4a881a3485$export$bf688221f59024e5
    at $704cf1d3b684cc5c$export$9f8ac96af4b1b2ae (file:///X:/coding/coding-issues/nextui-textarea-issue/node_modules/@react-aria/ssr/dist/import.mjs:39:37)      
    at NextUIProvider (file:///X:/coding/coding-issues/nextui-textarea-issue/node_modules/@nextui-org/system/dist/chunk-UBFAUI4F.mjs:5:25)
    at App (webpack-internal:///./src/pages/_app.tsx:16:16)
    at StyleRegistry (X:\coding\coding-issues\nextui-textarea-issue\node_modules\styled-jsx\dist\index\index.js:449:36)
    at PathnameContextProviderAdapter (X:\coding\coding-issues\nextui-textarea-issue\node_modules\next\dist\shared\lib\router\adapters.js:78:11)
    at AppContainer (X:\coding\coding-issues\nextui-textarea-issue\node_modules\next\dist\server\render.js:341:29)
    at AppContainerWithIsomorphicFiberStructure (X:\coding\coding-issues\nextui-textarea-issue\node_modules\next\dist\server\render.js:377:57)
    at div
    at Body (X:\coding\coding-issues\nextui-textarea-issue\node_modules\next\dist\server\render.js:677:21)
Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6043:9)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderChildrenArray (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6211:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6141:7)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderHostElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5642:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5952:5)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderChildrenArray (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6211:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6141:7)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderHostElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5642:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5952:5)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderForwardRef (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5854:7)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6005:11)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderHostElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5642:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5952:5)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderIndeterminateComponent (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5785:7)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderHostElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5642:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5952:5)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderIndeterminateComponent (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5785:7)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderContextProvider (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5920:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6017:11)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderIndeterminateComponent (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5785:7)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
- error Error: Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: object.
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6043:9)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderChildrenArray (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6211:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6141:7)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderHostElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5642:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5952:5)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderChildrenArray (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6211:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6141:7)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderHostElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5642:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5952:5)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderForwardRef (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5854:7)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6005:11)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderHostElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5642:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5952:5)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderIndeterminateComponent (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5785:7)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderNode (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6259:12)
    at renderHostElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5642:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5952:5)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderIndeterminateComponent (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5785:7)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderContextProvider (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5920:3)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6017:11)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11)
    at renderNodeDestructive (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6076:14)
    at renderIndeterminateComponent (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5785:7)
    at renderElement (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:5946:7)
    at renderNodeDestructiveImpl (X:\coding\coding-issues\nextui-textarea-issue\node_modules\react-dom\cjs\react-dom-server.browser.development.js:6104:11) {
  digest: undefined
}

Other notes:

  • <Input /> works, but <Textarea /> doesn't
  • Client side rendering does not seem to throw the error, it is thrown only when SSR'ing

Your Example Website or App

https://github.com/Tronikelis/nextui-textarea-issue

Steps to Reproduce the Bug or Issue

  1. Clone https://github.com/Tronikelis/nextui-textarea-issue
  2. npm i
  3. npm run dev
  4. Go to the index page /
  5. The error is shown

Expected behavior

The element should render without errors

Screenshots or Videos

No response

Operating System Version

windows, linux

Browser

Chrome, Firefox

@Tronikelis Tronikelis added the 🐛 Type: Bug Something isn't working label Jun 18, 2023
@Tronikelis
Copy link
Author

Tronikelis commented Jun 19, 2023

The error is caused by an incorrect default import resolution of react-textarea-autosize

Code from production bundle:

import TextareaAutosize from "react-textarea-autosize";

var Textarea = forwardRef(
  ({ style, minRows = 3, maxRows = 8, cacheMeasurements = false, onHeightChange, ...otherProps }, ref) => {
    const {
      Component,
      label,
      description,
      shouldLabelBeOutside,
      shouldLabelBeInside,
      errorMessage,
      getBaseProps,
      getLabelProps,
      getInputProps,
      getInputWrapperProps,
      getDescriptionProps,
      getErrorMessageProps
    } = useInput({ ref, ...otherProps, isMultiline: true });





    console.log(TextareaAutosize)
    // default: {
    //   '$$typeof': Symbol(react.forward_ref),
    //   render: [Function: TextareaAutosize]
    // }




    const labelContent = /* @__PURE__ */ jsx("label", { ...getLabelProps(), children: label });
    const inputProps = getInputProps();
    return /* @__PURE__ */ jsxs(Component, { ...getBaseProps(), children: [
      shouldLabelBeOutside ? labelContent : null,
      /* @__PURE__ */ jsxs("div", { ...getInputWrapperProps(), children: [
        shouldLabelBeInside ? labelContent : null,
        /* @__PURE__ */ jsx(
          TextareaAutosize,
          {
            ...inputProps,
            cacheMeasurements,
            maxRows,
            minRows,
            style: mergeProps(inputProps.style, style != null ? style : {}),
            onHeightChange
          }
        )
      ] }),
      errorMessage ? /* @__PURE__ */ jsx("div", { ...getErrorMessageProps(), children: errorMessage }) : description ? /* @__PURE__ */ jsx("div", { ...getDescriptionProps(), children: description }) : null
    ] });
  }
);

As you can see from the console.log, the react-textarea-autosize gets imported not as a default module somehow, but just raw with the default property 🤔

This change fixes the problem:

FROM:

/* @__PURE__ */ jsx(
  TextareaAutosize,
  {
    ...inputProps,
    cacheMeasurements,
    maxRows,
    minRows,
    style: mergeProps(inputProps.style, style != null ? style : {}),
    onHeightChange
  }
)

TO:

/* @__PURE__ */ jsx(
  TextareaAutosize.default,
  {
    ...inputProps,
    cacheMeasurements,
    maxRows,
    minRows,
    style: mergeProps(inputProps.style, style != null ? style : {}),
    onHeightChange
  }
)

Now I tried to import the react-textarea-autosize library by itself and it renders without errors, so probably nextui does not handle default imports properly.

SSR's without problems:

import TextareaAutosize from "react-textarea-autosize";
export default function Home() {
    return (
        <div>
            <TextareaAutosize />
        </div>
    );
}

I didn't come up with a solution yet

I did all my testing on this minimal nextjs repo: https://github.com/Tronikelis/nextui-textarea-issue (the same one as mentioned before)

Maybe this could be because of a bad a nextjs config, but I doubt it because I am using the default config + importing just the react-textarea-autosize works

@Tronikelis
Copy link
Author

Okay this is actually pretty weird, react-textarea-autosize gets imported as a commonjs module ALWAYS

My project:

  • uses vite
  • is full ESM (package.json has type module)

What happens:

  • @nextui-org/react gets correctly resolved as esm
  • vite's (and next.js probably) bundler sees import TextareaAutosize from "react-textarea-autosize";
  • it resolves react-textarea-autosize as cjs somehow, even if it is import'ed from an esm project and it has support for esm as far as I can see

@Tronikelis
Copy link
Author

This has been fixed in react-textarea-autosize version 8.5.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛 Type: Bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant