linaria icon indicating copy to clipboard operation
linaria copied to clipboard

The expression evaluated to 'undefined' ...

Open asvinb opened this issue 2 years ago • 42 comments

Environment

  • Linaria version: 4.5.2
  • Bundler (+ version): webpack 5.88.2
  • Node.js version: v18.12.1
  • OS: macOS 13.4.1 (22F82)

Description

After upgrading to the latest version of Linaria, I'am getting the following errors across all components:

SyntaxError: index.tsx: The expression evaluated to 'undefined', which is probably a mistake. If you want it to be inserted into CSS, explicitly cast or transform the value to a string, e.g. - 'String(styles)'.
  38 |
  39 | export const Component = styled(CustomComponent)`
> 40 | 	${styles}
     |    ^^^^^^
  41 | `;
  42 |
    at transformFile.next (<anonymous>)
    at run.next (<anonymous>)
    at Generator.next (<anonymous>)
Import trace for requested module:

styles is just an object containing CSS rules.

Same code works with Linaria v4.3.8 without any issues.

Reproducible Demo

asvinb avatar Jul 18 '23 12:07 asvinb

Hi @asvinb! We are trying to investigate the reason here https://github.com/callstack/linaria/pull/1286#discussion_r1265414453. Do you have multiple entrypoints in webpack?

Anber avatar Jul 18 '23 15:07 Anber

👋 @Anber , indeed I have multiple entry points. 👍

asvinb avatar Jul 18 '23 15:07 asvinb

Well, at least we know what went wrong. Now I need to understand why and how to fix it :)

Anber avatar Jul 18 '23 15:07 Anber

👋 @Anber any ETA on a fix for this? Thanks!

asvinb avatar Jul 20 '23 08:07 asvinb

@asvinb right after https://github.com/callstack/linaria/pull/1289. Hopefully, by the end of this week.

Anber avatar Jul 20 '23 10:07 Anber

I doubt it, but maybe the new version has fixed that error since I couldn't reproduce the problem.

Anber avatar Jul 23 '23 15:07 Anber

@Anber Sadly upgrading to the latest version, 4.5.3 does not fix the issue.

asvinb avatar Jul 24 '23 08:07 asvinb

@asvinb Is there any chance that you can provide a repo that reproduces this error?

Anber avatar Jul 24 '23 08:07 Anber

@Anber I'll setup a repo and provide you with the details.

asvinb avatar Jul 24 '23 14:07 asvinb

Hi @asvinb! Looks like @tsukuisan found something related https://github.com/callstack/linaria/issues/1300

Anber avatar Jul 25 '23 14:07 Anber

Nice thanks for the update @Anber !

asvinb avatar Jul 25 '23 15:07 asvinb

@asvinb @PierreGUI the fix is going to be released in a few minutes. Could you please check it?

Anber avatar Jul 25 '23 15:07 Anber

Thanks @Anber . I will check and let you know.

asvinb avatar Jul 26 '23 08:07 asvinb

Thanks @Anber! Unfortunately the new release doesn't build in my project yet :/

PierreGUI avatar Jul 26 '23 08:07 PierreGUI

I opened another issue that might or might not be related. The error message is the same and it also started happening in the latest couple of versions. It has a reproducible demo. https://github.com/callstack/linaria/issues/1304

GabbeV avatar Jul 27 '23 11:07 GabbeV

Well… let's try again :) It would be cool if someone could build Linaria locally and check if the issue was fixed.

Anber avatar Jul 27 '23 19:07 Anber

Sorry, would love to do that but I'm away atm Will try when I'm back. Cheers

On Thu, 27 Jul 2023, 21:18 Anton Evzhakov, @.***> wrote:

Well… let's try again :) It would be cool if someone could build Linaria locally and check if the issue was fixed.

— Reply to this email directly, view it on GitHub https://github.com/callstack/linaria/issues/1287#issuecomment-1654369065, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAHXREHB5CZYZH7O4TLP45LXSK5I5ANCNFSM6AAAAAA2OLAJPY . You are receiving this because you were mentioned.Message ID: @.***>

PierreGUI avatar Jul 28 '23 06:07 PierreGUI

@Anber Sorry I was out for a few days. I was unable to replicate the issue when trying to recreate the same setup so that you can have a look. However on my existing repo (proprietary code), the fix is not working. I'll try to recreate and ping you.

asvinb avatar Jul 31 '23 08:07 asvinb

@Anber The issue that @GabbeV created describes exactly what I was experiencing. So maybe you can release 4.5.5 and we can test.

asvinb avatar Aug 08 '23 07:08 asvinb

@Anber The issue that @GabbeV created describes exactly what I was experiencing. So maybe you can release 4.5.5 and we can test.

@asvinb I think it's already released. @GabbeV issue is closed in https://github.com/callstack/linaria/commit/9bb782d0b875a75c9a9b5051b1fbca03db8b554a and its released in 4.5.4

morriq avatar Aug 08 '23 13:08 morriq

The fix for my issue is not in any release yet. It was merged 2 days after 4.5.4 was released. Staying on earlier version of linaria works fine for me until 4.5.5 is released.

GabbeV avatar Aug 08 '23 21:08 GabbeV

@Anber Alas, the build from latest master branch (da191b50cf9c10c22e0b66f00edbbf35d1b9a524) doesn't seem to fix my build 😢

The expression evaluated to 'undefined', which is probably a mistake. If you want it to be inserted into CSS, explicitly cast or transform the value to a string, e.g. - 'String(TOASTS_MAX_WIDTH)'.
> 18 | 	max-width: ${TOASTS_MAX_WIDTH}px;

PierreGUI avatar Aug 14 '23 13:08 PierreGUI

Hi @PierreGUI! The master is broken right now. We have found a problem with parallel processing that can be related to this issue as well. I'm trying to solve it in #1321.

Anber avatar Aug 15 '23 14:08 Anber

Hi guys!

I would greatly appreciate it If you could check your build with this branch https://github.com/callstack/linaria/pull/1330. All recent PRs will be released as 5.0 because the processing was almost completely rewritten. There is still some work to be done to polish and improve the debug experience, so if you can provide some feedback, I can release the new version faster and, hopefully, with better stability and performance :)

Anber avatar Aug 24 '23 18:08 Anber

I get errors from all commits newer than a4263c4558ca092293e43689ab5501c3098fab84 Test procedure:

git clone https://github.com/callstack/linaria.git
cd linaria
git checkout commithash
pnpm bootstrap
cd ../ourproject
npm link ../linaria/packages/babel/ ../linaria/packages/core/ ../linaria/packages/logger/ ../linaria/packages/react/ ../linaria/packages/shaker/ ../linaria/packages/tags/ ../linaria/packages/utils/ ../linaria/packages/webpack5-loader/
npx webpack

Results: 9bb782d0b875a75c9a9b5051b1fbca03db8b554a => EvalError: Cannot read properties of undefined ae162f464fa431708e512f29c0044c6650b219dd => Error: Cannot find module '@babel/plugin-transform-typescript' 715dc93cd92bae56e8b36c7df90f1f267c3f4787 => Error: Cannot find module '@babel/plugin-transform-typescript' 9cb4143d65214a5312d1377b19b0fd3d29ce7244 => EvalError: somefile.tsx: Cannot find module EvalError: Cannot use import statement outside a module in da191b50cf9c10c22e0b66f00edbbf35d1b9a524 => EvalError: somefile.tsx: Cannot find module SyntaxError: somefile.tsx: An error occurred when evaluating the expression: > (0 , _importedFunction.importedFunction) is not a function. b3ef8c1f8bffd6090b39430280d21a0024d6a418 => EvalError: somefile.tsx: Cannot find module 'someotherfile' SyntaxError: somefile.tsx: An error occurred when evaluating the expression: > Cannot read properties of undefined (reading 'someproperty'). ea1444f6b10d43b07b7b6accfdd195743027a3b5 => EvalError: somefile.tsx: Cannot find module 'someotherfile' EvalError: Cannot use import statement outside a module in SyntaxError: somefile.tsx: The expression evaluated to 'NaN' 88e076133df82a3df1a008be3751caea4ec99d0f => MaxListenersExceededWarning: Possible EventTarget memory leak detected. 11 abort listeners added to [AbortSignal]. Use events.setMaxListeners() to increase limit EvalError: Cannot use import statement outside a module in SyntaxError: somefile.tsx: The expression evaluated to 'NaN' EvalError: react-modal: No elements were found for selector #react-root. in cb853e143b0bdfdab33a7edcc10fe9b251409b81 (master) => TypeError: Cannot read properties of undefined (reading 'cssText') at linaria/packages/webpack5-loader/lib/index.js:82:16 224d3a2253dca94425a2215250c401884ed4fd07 (dynamic-require) => TypeError: Cannot read properties of undefined (reading 'cssText') at linaria/packages/webpack5-loader/lib/index.js:82:16

Most of these gave a ton of errors in different files so i might have missed some. master and dynamic-require both gave only that single error and exited immediately without any further output from webpack.

GabbeV avatar Aug 26 '23 15:08 GabbeV

Hi @GabbeV!

Could you please check this branch? https://github.com/callstack/linaria/pull/1331

Anber avatar Aug 31 '23 06:08 Anber

The only errors i get using that branch is react-modal claiming the element doesn't exist when this line execute during eval Modal.setAppElement('#someid'); and another error in the same module saying Cannot find module 'somefile'. However both errors goes away if i comment out that line or disable happyDOM.

I expect linaria have no guarantees about code like that working so I'm happy to call that "works as intended" other than the slightly weird additional error about missing module being a bit confusing.

Great work! Looking forward to the build time improvements when we can land this in our project.

GabbeV avatar Sep 04 '23 20:09 GabbeV

Hi @GabbeV, That's amazing news! If you can create a repo that reproduces these errors, I can try to fix them as well.

Anber avatar Sep 04 '23 20:09 Anber

@Anber This is still a problem with v4.5.4.

therealgilles avatar Sep 13 '23 17:09 therealgilles

Hi @therealgilles! Yep, I know. It is fixed in 5.0 that will be released soon.

Anber avatar Sep 13 '23 17:09 Anber