-
-
Notifications
You must be signed in to change notification settings - Fork 6.3k
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
Popper.js:11 Uncaught TypeError: styled_default is not a function at Popper.js:11:20 #12423
Comments
A fresh clone of this reproduction do reproduce this error, but if I remove the I see that the cause of this issue and #8308 is missing module initialization. I replace import { Popper } from "@mui/material";
console.log(Popper); The // ...
import { styled, Theme, useThemeProps } from '../styles';
// ...
const PopperRoot = styled(PopperUnstyled, {
name: 'MuiPopper',
slot: 'Root',
overridesResolver: (props, styles) => styles.root,
})({});
// ... Full transformed code by vite: import {
PopperUnstyled_default,
init_PopperUnstyled
} from "/node_modules/.vite/deps/chunk-73GXGH6W.js?v=b24550c9";
import {
styled_default,
useThemeProps
} from "/node_modules/.vite/deps/chunk-QGFUN55Y.js?v=b24550c9";
import {
init_esm as init_esm2,
useThemeWithoutDefault_default
} from "/node_modules/.vite/deps/chunk-M6YZV643.js?v=b24550c9";
import {
_objectWithoutPropertiesLoose,
init_objectWithoutPropertiesLoose
} from "/node_modules/.vite/deps/chunk-KBFHYFJ6.js?v=b24550c9";
import {
HTMLElementType,
init_esm,
refType_default
} from "/node_modules/.vite/deps/chunk-KQS6UZBQ.js?v=b24550c9";
import {
require_prop_types
} from "/node_modules/.vite/deps/chunk-EOOR7TYC.js?v=b24550c9";
import {
require_jsx_runtime
} from "/node_modules/.vite/deps/chunk-TNQUW4IY.js?v=b24550c9";
import {
_extends,
init_extends
} from "/node_modules/.vite/deps/chunk-6K2CSZVE.js?v=b24550c9";
import {
require_react
} from "/node_modules/.vite/deps/chunk-JFTBQ7A7.js?v=b24550c9";
import {
__toESM
} from "/node_modules/.vite/deps/chunk-AC2VUBZ6.js?v=b24550c9";
// node_modules/@mui/material/Popper/Popper.js
init_extends();
init_objectWithoutPropertiesLoose();
init_PopperUnstyled();
init_esm2();
init_esm();
var import_prop_types = __toESM(require_prop_types());
var React = __toESM(require_react());
var import_jsx_runtime = __toESM(require_jsx_runtime());
var _excluded = ["components", "componentsProps", "slots", "slotProps"];
var PopperRoot = styled_default(PopperUnstyled_default, {
name: "MuiPopper",
slot: "Root",
overridesResolver: (props, styles) => styles.root
})({});
var Popper = React.forwardRef(function Popper2(inProps, ref) {
var _slots$root;
const theme = useThemeWithoutDefault_default();
const props = useThemeProps({
props: inProps,
name: "MuiPopper"
});
const {
components,
componentsProps,
slots,
slotProps
} = props, other = _objectWithoutPropertiesLoose(props, _excluded);
const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;
return (0, import_jsx_runtime.jsx)(PopperRoot, _extends({
direction: theme == null ? void 0 : theme.direction,
slots: {
root: RootComponent
},
slotProps: slotProps != null ? slotProps : componentsProps
}, other, {
ref
}));
});
true ? Popper.propTypes = {
// ----------------------------- Warning --------------------------------
// | These PropTypes are generated from the TypeScript type definitions |
// | To update them edit TypeScript types and run "yarn proptypes" |
// ----------------------------------------------------------------------
/**
* An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),
* or a function that returns either.
* It's used to set the position of the popper.
* The return value will passed as the reference object of the Popper instance.
*/
anchorEl: import_prop_types.default.oneOfType([HTMLElementType, import_prop_types.default.object, import_prop_types.default.func]),
/**
* Popper render function or node.
*/
children: import_prop_types.default.oneOfType([import_prop_types.default.node, import_prop_types.default.func]),
/**
* @ignore
*/
component: import_prop_types.default.elementType,
/**
* The components used for each slot inside the Popper.
* Either a string to use a HTML element or a component.
* @default {}
*/
components: import_prop_types.default.shape({
Root: import_prop_types.default.elementType
}),
/**
* The props used for each slot inside the Popper.
* @default {}
*/
componentsProps: import_prop_types.default.shape({
root: import_prop_types.default.oneOfType([import_prop_types.default.func, import_prop_types.default.object])
}),
/**
* An HTML element or function that returns one.
* The `container` will have the portal children appended to it.
*
* By default, it uses the body of the top-level document object,
* so it's simply `document.body` most of the time.
*/
container: import_prop_types.default.oneOfType([HTMLElementType, import_prop_types.default.func]),
/**
* The `children` will be under the DOM hierarchy of the parent component.
* @default false
*/
disablePortal: import_prop_types.default.bool,
/**
* Always keep the children in the DOM.
* This prop can be useful in SEO situation or
* when you want to maximize the responsiveness of the Popper.
* @default false
*/
keepMounted: import_prop_types.default.bool,
/**
* Popper.js is based on a "plugin-like" architecture,
* most of its features are fully encapsulated "modifiers".
*
* A modifier is a function that is called each time Popper.js needs to
* compute the position of the popper.
* For this reason, modifiers should be very performant to avoid bottlenecks.
* To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).
*/
modifiers: import_prop_types.default.arrayOf(import_prop_types.default.shape({
data: import_prop_types.default.object,
effect: import_prop_types.default.func,
enabled: import_prop_types.default.bool,
fn: import_prop_types.default.func,
name: import_prop_types.default.any,
options: import_prop_types.default.object,
phase: import_prop_types.default.oneOf(["afterMain", "afterRead", "afterWrite", "beforeMain", "beforeRead", "beforeWrite", "main", "read", "write"]),
requires: import_prop_types.default.arrayOf(import_prop_types.default.string),
requiresIfExists: import_prop_types.default.arrayOf(import_prop_types.default.string)
})),
/**
* If `true`, the component is shown.
*/
open: import_prop_types.default.bool.isRequired,
/**
* @ignore
*/
ownerState: import_prop_types.default.any,
/**
* Popper placement.
* @default 'bottom'
*/
placement: import_prop_types.default.oneOf(["auto-end", "auto-start", "auto", "bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"]),
/**
* Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.
* @default {}
*/
popperOptions: import_prop_types.default.shape({
modifiers: import_prop_types.default.array,
onFirstUpdate: import_prop_types.default.func,
placement: import_prop_types.default.oneOf(["auto-end", "auto-start", "auto", "bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"]),
strategy: import_prop_types.default.oneOf(["absolute", "fixed"])
}),
/**
* A ref that points to the used popper instance.
*/
popperRef: refType_default,
/**
* The props used for each slot inside the Popper.
* @default {}
*/
slotProps: import_prop_types.default.shape({
root: import_prop_types.default.oneOfType([import_prop_types.default.func, import_prop_types.default.object])
}),
/**
* The components used for each slot inside the Popper.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types.default.shape({
root: import_prop_types.default.elementType
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types.default.oneOfType([import_prop_types.default.arrayOf(import_prop_types.default.oneOfType([import_prop_types.default.func, import_prop_types.default.object, import_prop_types.default.bool])), import_prop_types.default.func, import_prop_types.default.object]),
/**
* Help supporting a react-transition-group/Transition component.
* @default false
*/
transition: import_prop_types.default.bool
} : void 0;
var Popper_default = Popper;
export {
Popper_default
};
//# sourceMappingURL=chunk-A7HT3P54.js.map The import { createStyled, shouldForwardProp } from '@mui/system';
import defaultTheme from './defaultTheme';
export const rootShouldForwardProp = (prop) => shouldForwardProp(prop) && prop !== 'classes';
export const slotShouldForwardProp = shouldForwardProp;
const styled = createStyled({
defaultTheme,
rootShouldForwardProp,
});
export default styled; Full transformed code by vite: import {
createStyled,
defaultTheme_default,
init_defaultTheme,
init_esm,
shouldForwardProp,
useThemeProps
} from "/node_modules/.vite/deps/chunk-M6YZV643.js?v=b24550c9";
import {
__esm
} from "/node_modules/.vite/deps/chunk-AC2VUBZ6.js?v=b24550c9";
// node_modules/@mui/material/styles/useThemeProps.js
function useThemeProps2({
props,
name
}) {
return useThemeProps({
props,
name,
defaultTheme: defaultTheme_default
});
}
var init_useThemeProps = __esm({
"node_modules/@mui/material/styles/useThemeProps.js"() {
init_esm();
init_defaultTheme();
}
});
// node_modules/@mui/material/styles/styled.js
var rootShouldForwardProp, slotShouldForwardProp, styled, styled_default;
var init_styled = __esm({
"node_modules/@mui/material/styles/styled.js"() {
init_esm();
init_defaultTheme();
rootShouldForwardProp = (prop) => shouldForwardProp(prop) && prop !== "classes";
slotShouldForwardProp = shouldForwardProp;
styled = createStyled({
defaultTheme: defaultTheme_default,
rootShouldForwardProp
});
styled_default = styled;
}
});
export {
useThemeProps2 as useThemeProps,
init_useThemeProps,
rootShouldForwardProp,
slotShouldForwardProp,
styled_default,
init_styled
};
//# sourceMappingURL=chunk-QGFUN55Y.js.map Note that in the // node_modules/@mui/material/styles/styled.js
var rootShouldForwardProp, slotShouldForwardProp, styled, styled_default;
var init_styled = __esm({
"node_modules/@mui/material/styles/styled.js"() {
init_esm();
init_defaultTheme();
rootShouldForwardProp = (prop) => shouldForwardProp(prop) && prop !== "classes";
slotShouldForwardProp = shouldForwardProp;
styled = createStyled({
defaultTheme: defaultTheme_default,
rootShouldForwardProp
});
styled_default = styled;
}
});
export {
useThemeProps2 as useThemeProps,
init_useThemeProps,
rootShouldForwardProp,
slotShouldForwardProp,
styled_default,
init_styled
}; This suggest we should call import {
PopperUnstyled_default,
init_PopperUnstyled
} from "/node_modules/.vite/deps/chunk-73GXGH6W.js?v=b24550c9";
import {
styled_default,
useThemeProps
} from "/node_modules/.vite/deps/chunk-QGFUN55Y.js?v=b24550c9";
import {
init_esm as init_esm2,
useThemeWithoutDefault_default
} from "/node_modules/.vite/deps/chunk-M6YZV643.js?v=b24550c9";
import {
_objectWithoutPropertiesLoose,
init_objectWithoutPropertiesLoose
} from "/node_modules/.vite/deps/chunk-KBFHYFJ6.js?v=b24550c9";
import {
HTMLElementType,
init_esm,
refType_default
} from "/node_modules/.vite/deps/chunk-KQS6UZBQ.js?v=b24550c9";
import {
require_prop_types
} from "/node_modules/.vite/deps/chunk-EOOR7TYC.js?v=b24550c9";
import {
require_jsx_runtime
} from "/node_modules/.vite/deps/chunk-TNQUW4IY.js?v=b24550c9";
import {
_extends,
init_extends
} from "/node_modules/.vite/deps/chunk-6K2CSZVE.js?v=b24550c9";
import {
require_react
} from "/node_modules/.vite/deps/chunk-JFTBQ7A7.js?v=b24550c9";
import {
__toESM
} from "/node_modules/.vite/deps/chunk-AC2VUBZ6.js?v=b24550c9";
// node_modules/@mui/material/Popper/Popper.js
init_extends();
init_objectWithoutPropertiesLoose();
init_PopperUnstyled();
init_esm2();
init_esm();
var import_prop_types = __toESM(require_prop_types());
var React = __toESM(require_react());
var import_jsx_runtime = __toESM(require_jsx_runtime());
var _excluded = ["components", "componentsProps", "slots", "slotProps"];
var PopperRoot = styled_default(PopperUnstyled_default, {
name: "MuiPopper",
slot: "Root",
overridesResolver: (props, styles) => styles.root
})({}); Missing calling of import {
styled_default,
useThemeProps
// init_styled missing
} from "/node_modules/.vite/deps/chunk-QGFUN55Y.js?v=b24550c9";
// missing calling of init_styled();
// styled_default is undefined.
var PopperRoot = styled_default(/* */) |
I think this bug may related to chunk seperation. When such a small chunk of
// at line number 33000-ish
// node_modules/@mui/material/styles/styled.js
var rootShouldForwardProp = (prop) => shouldForwardProp(prop) && prop !== "classes";
var slotShouldForwardProp = shouldForwardProp;
var styled3 = createStyled3({
defaultTheme: defaultTheme_default,
rootShouldForwardProp
});
var styled_default2 = styled3; |
So this comment is true on the aspects of this issue
|
Hello, for information, I am facing the same problem when using the |
@Tanimodori thank you for spending time on this. So it's a Vite bug. I'm glad that you could find the bug. It was such a complicated situation. |
Maybe related: #5142 |
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
Hey all, I've been trying to fix what I believe is a very similar issue, except for me it affects the I'm having the error While working on a minimal reproduction, it seems like the bug exists in version Please find an attached repository example: https://github.com/jbsouvestre/vite-esbuild-bug-repro The vite-4.0.0 branch has the bug If the issue is not related, please disregard this comment |
@jbsouvestre The vite version I used for my analysis is 4.2.0 fyi. |
I'm also having this issue (on Box.js with the following error : |
I'm having the same issue but with Grid2
Update: I managed to have the error moved onto Box.js as mentioned in the comment above when I rearranged import order. I was finally successful in removing the error altogether after further import order rearrangements. I essentially started at my top-level app file and moved a few (not all) material component imports to the top. It seemed to like it when custom components that also use MUI components were imported after MUI components used in the immediate file. Luckily, I didn't have to continue that process into other files as my fix was in a top level file. |
Same Issue with Grid2 But caused by upgrading "@mui/x-data-grid" to 6.1.0. The bug doesn't happen on 5.x versions; Update: |
I had the edit: it's back. This issue is popping up daily for at least someone on my team. edit again: I got rid of |
We're also experiencing this issue. Upgrading Vite hasn't worked. It mostly seems to effect us when using icons from the |
Same problem here, I cant use popper, getting the error:
I'm using vite, npm and styled-components. |
Has anyone had any success with a temporary work around? Im using NX and [email protected] and this has been a blocker for the past 4 days. |
Using Also having same issue in Grid2.js Uncaught TypeError: styled_default is not a function
at Grid2.js:5:26
(anonymous) @ Grid2.js:5 Seems to happen after a few restart cycles, usually clearing node_modules and npm install makes it go away for a while but not a great solution. Was there some logic to the re-ordering of imports that seems to work? Moving Mui imports higher doesnt seem to have any effect for me |
I upgraded to notistack v3.x I started to get the same error: Uncaught TypeError: styled_default is not a function
at Grid2.js:5:26 When fall back to notistack 2.0.8 it goes away. vite 4.3.3 |
We encounter the same problem on our project. And we are not able to reproduce systematically the error. We already try to upgrade or downgrade MUI, we check every import. Everything seems right, but sometimes, the appears, sometimes it works perfectly. |
I have the same Issue after updating only vite-plugin-checker from 0.5.6 to 0.6.0
|
It doesn't seem related to vitejs version since we have same issue with vite 3.1.0 Could it be the issue ? |
@Tanimodori Thanks for the excellent investigation work. I've narrowed down the issue a bit more and created an esbuild issue: evanw/esbuild#3357. |
This error happened to me after that I updated npm and then fixed it |
oh, this is saved my day! |
Almost a year and the issue is still there...Can't work. |
Thaks for your reply
…On Mon, 11 Mar 2024, 15:44 Thomas Tridon, ***@***.***> wrote:
Almost a year and the issue is still there...Can't work.
—
Reply to this email directly, view it on GitHub
<#12423 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AUIUBQERMYPPUKEC4O4MH73YXWKIJAVCNFSM6AAAAAAV3NV7GGVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBYGI2TAMJZGQ>
.
You are receiving this because you commented.Message ID:
***@***.***>
|
I have the same error and when I get it I can only solve the problem by deleting node_modules and running npm install again. |
Because the issue is with the cached dependencies built by esbuild, deleting |
Thanks. I followed the recommendation above of adding this to vite.config.js optimizeDeps: { and it seems to have done the trick - not sure if this is permanently fixed or just by chance. |
I encountered the same error and resolved it by installing 'esbuild'. You can try this command: 'npm install --save-exact --save-dev esbuild' |
Also experiencing the problem, is anyone working on that? It's a big problem for many people it seems |
I've tried all of the recipes without any success. And I think I've found a stable workaround. Just add
as a first statement in your It propely initalizes Remove cache folder If you have a complicated multi-module application and it's unclear to wich module you should add this import, then you can try the following algorithm:
|
If you use Tooltip of mui, please refer this. Hello, I'm a junior developer in my second year working in South Korea. When starting the development server with npm run dev, Vite pre-bundles dependency modules (including many dependencies like the MUI library) to improve loading speed. The results of this bundling are generated as several chunk_????.js files inside the 'node_modules/.vite/deps' directory. If Vite correctly pre-bundles, no error occurs. Although it seems odd that the pre-bundling works correctly in some local environments and causes errors in others, the following is clear: In environments where the error occurs, adding the following option to vite.config.js will ensure Vite includes this correctly in the pre-bundle:
By explicitly telling Vite to optimize (pre-bundle) this, the error can be avoided. |
The include solution did not work for me, importing this package explicitly in my index file did. |
const API_URL = import.meta.env.VITE_APP_API_URL; interface Asset { const TableComponent: React.FC = () => { const [reloading, setReloading] = useState(false); const handleDelete = (id: string) => async () => {
}; const handleUpdateData = async (id: string) => {
}; useEffect(() => {
}, [reloading]); function DateFormat(dateString: string): string {
} function AmountFormat(amount: number): string { const handleFormOpen = () => { const handleCloseAlert = () => { const [isActive, setIsActive] = useState(true); useEffect(() => {
}, [isActive]); return ( <Box sx={{ display: "flex", justifyContent: "space-between", mx: 5, mt: 2, }}> <Typography variant="h6" component="div" sx={{ fontWeight: "bold", fontSize: "1.2rem", }}> Assets <Button onClick={handleFormOpen} type="submit" variant="contained" color="primary" id="add-expenses-btn" sx={{ textTransform: "none" }}> Add Asset
); export default TableComponent; // https://vitejs.dev/config/ |
This seems to work for me , thanks |
This worked for me for VITS project.
All worked fine |
am I correct that this bug is in the dev-mode of vite only (so not in production builds)? aside: I think I found a similar issue with @mui/icons-material here mui/material-ui#44180 |
Describe the bug
I have updated some of my dependencies.
I expect to see the address of my code in the error call stack.
All I see is this:
I have also reported it to the MUI Team
I have also seen that it's been asked here.
My problem is that the error does not give us more information. Is it a Vite bug? Is it a bug related to esbuild? Is it a bug of MUI? I literally do not know.
Reproduction
https://github.com/Nefcanto/MuiPopperBug
Steps to reproduce
git clone https://github.com/Nefcanto/MuiPopperBug
cd MuiPopperBug
npm install
npm run dev
System Info
Used Package Manager
npm
Logs
No response
Validations
The text was updated successfully, but these errors were encountered: