-
Notifications
You must be signed in to change notification settings - Fork 295
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
Error when updating Next.js to 14.2.2 version while using lodash-es in a @vanilla-extract/css file #1393
Comments
I found a workaround that is based on this comment from react-refresh-webpack-plugin which seems to be the precursor of the one that next js is using internally.
const { createVanillaExtractPlugin } = require("@vanilla-extract/next-plugin");
const withVanillaExtract = createVanillaExtractPlugin();
/** @type {import('next').NextConfig} */
let nextConfig = {
webpack(config, { nextRuntime, webpack }) {
if (!nextRuntime) {
config.plugins.push(
new webpack.BannerPlugin({
banner: `$RefreshReg$ = () => {};\n$RefreshSig$ = () => () => {};\n`,
raw: true,
entryOnly: true,
include: /\.css.ts$/,
}),
);
}
return config;
},
};
nextConfig = withVanillaExtract(nextConfig);
module.exports = nextConfig; |
Something about the |
I took a look into it and it seems that next js adds only es module exports to the react-refresh/runtime registry. [1][2] So each time a react component imports a .css.ts file which imports a capitalized function from an es module we run into this issue. (lodash-es for example exports the This issue is mentioned in react-refresh-webpack-plugin (which behaves similar to the next js internals and also relies on react-refresh/runtime)
...
Next js seems to use a similar noop approach on initialization. So it might be a good idea to add these noops to .css.ts files when using the vanilla extract next-plugin, especially since the number of "esm only" packages keeps increasing. |
Describe the bug
I encountered an error when updating my Next.js version from 14.1.4 to 14.2.2 while using lodash-es in a @vanilla-extract/css file. The error seems to be related to the usage of lodash-es in conjunction with @vanilla-extract/css.
Code Sample:
this branch has nextjs 14.1.4 and its working fine
https://github.com/zecka/next-vanilla-extract-example/tree/chore/add-lodash-es
Steps to Reproduce:
Create a Next.js project.
Install @vanilla-extract/css.
Create a CSS file using @vanilla-extract/css and import lodash-es in the same file.
Update Next.js to version 14.2.2
Attempt to build or run the project.
Expected Behavior:
The project should build or run successfully without any errors, as it did with Next.js version 14.1.4.
Reproduction
https://github.com/zecka/next-vanilla-extract-example/tree/chore/lodash-es-next14.2.2-bug
System Info
Build Error Failed to compile Next.js (14.2.2) ./src/app/components/demo.css.ts NonErrorEmittedError: (Emitted value instead of an instance of Error) ReferenceError: $RefreshReg$ is not defined
Used Package Manager
yarn
Logs
No response
Validations
The text was updated successfully, but these errors were encountered: