rollup/rollup

TypeError: Cannot read properties of null (reading 'render')

elchininet opened this issue ยท 12 comments

Rollup Version

4.16.0

Operating System (or Browser)

Ubuntu 20.04.6 LTS / MacOS Sonoma 14.4.1

Node Version (if applicable)

18.20.2

Link To Reproduction

elchininet/shadow-dom-selector#55

Expected Behaviour

Build should success as it succeeded on previous versions.

Actual Behaviour

Build fails with an error coming from ConditionalExpression.render:

at ConditionalExpression.render (/xxx/node_modules/rollup/dist/shared/rollup.js:11185:24)
    at VariableDeclarator.render (/xxx/node_modules/rollup/dist/shared/rollup.js:12038:18)
    at VariableDeclaration.render (/xxx/node_modules/rollup/dist/shared/rollup.js:13724:28)
    at renderStatementList (/xxx/node_modules/rollup/dist/shared/rollup.js:9106:25)
    at BlockStatement.render (/xxx/node_modules/rollup/dist/shared/rollup.js:9272:13)
    at FunctionDeclaration.render (/xxx/node_modules/rollup/dist/shared/rollup.js:6348:23)
    at ExportNamedDeclaration.render (/xxx/node_modules/rollup/dist/shared/rollup.js:11436:30)
    at renderStatementList (/xxx/node_modules/rollup/dist/shared/rollup.js:9095:35)
    at Program.render (/xxx/node_modules/rollup/dist/shared/rollup.js:12880:13)
    at Module.render (/xxx/node_modules/rollup/dist/shared/rollup.js:15641:18)

I tried to reproduce it in Repl without success, but seeing that it is coming from ConditionalExpression.render that was recently refactored this could give a clue to the devs.

A smaller version in repl

I'm working on a PR, will be finished soon

This issue has been resolved via #5481 as part of rollup@4.16.1. You can test it via npm install rollup.

Fixed: elchininet/shadow-dom-selector#56

Thanks for the quick fix ๐Ÿ‘๐Ÿผ

I get a similar error when running a build with Vite 5.2.10 that uses rollup 4.16.1:

vite v5.2.10 building for production...
transforming...
โœ“ 736 modules transformed.
x Build failed in 14.55s
error during build:

TypeError: Cannot read properties of null (reading 'render')
    at LogicalExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:11069:33)
    at LogicalExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:11081:24)
    at SequenceExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:11614:22)
    at IfStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:10216:23)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at BlockStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7830:13)
    at FunctionDeclaration.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at BlockStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7830:13)
    at FunctionDeclaration.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at BlockStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7830:13)
    at ArrowFunctionExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at CallExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:9234:21)
    at VariableDeclarator.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:10604:18)
    at VariableDeclaration.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:12293:28)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at BlockStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7830:13)
    at FunctionExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at FunctionExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:10138:15)
    at CallExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:9234:21)
    at ExpressionStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at ExpressionStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7761:15)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at Program.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:11449:13)
    at Module.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:14217:18)
    at Chunk.renderModules (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:16790:41)
    at Chunk.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:16286:111)
    at xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:17963:72
    at Array.map (<anonymous>)
    at renderChunks (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:17963:53)
    at Bundle.generate (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:18201:19)
    at async xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:20748:27
    at async catchUnfinishedHookActions (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:20175:16)
    at async build (xxx/node_modules/vite/dist/node/chunks/dep-DkOS1hkm.js:67489:22)
    at async CAC.<anonymous> (xxx/node_modules/vite/dist/node/cli.js:842:9)

The problem seems to be in LogicalExpression.render method here:

this.getUsedBranch().render(code, options, { // <--------
                isCalleeOfRenderedParent,
                preventASI,
                renderedParentType: renderedParentType || this.parent.type,
                renderedSurroundingElement: renderedSurroundingElement || this.parent.type
            });

Could you please suggest if this something not covered yet in rollup, or a misconfiguration on my side?

I get a similar error when running a build with Vite 5.2.10 that uses rollup 4.16.1:

vite v5.2.10 building for production...
transforming...
โœ“ 736 modules transformed.
x Build failed in 14.55s
error during build:

TypeError: Cannot read properties of null (reading 'render')
    at LogicalExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:11069:33)
    at LogicalExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:11081:24)
    at SequenceExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:11614:22)
    at IfStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:10216:23)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at BlockStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7830:13)
    at FunctionDeclaration.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at BlockStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7830:13)
    at FunctionDeclaration.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at BlockStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7830:13)
    at ArrowFunctionExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at CallExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:9234:21)
    at VariableDeclarator.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:10604:18)
    at VariableDeclaration.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:12293:28)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at BlockStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7830:13)
    at FunctionExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at FunctionExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:10138:15)
    at CallExpression.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:9234:21)
    at ExpressionStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:4892:23)
    at ExpressionStatement.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7761:15)
    at renderStatementList (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:7664:25)
    at Program.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:11449:13)
    at Module.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:14217:18)
    at Chunk.renderModules (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:16790:41)
    at Chunk.render (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:16286:111)
    at xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:17963:72
    at Array.map (<anonymous>)
    at renderChunks (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:17963:53)
    at Bundle.generate (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:18201:19)
    at async xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:20748:27
    at async catchUnfinishedHookActions (xxx/node_modules/vite/node_modules/rollup/dist/es/shared/node-entry.js:20175:16)
    at async build (xxx/node_modules/vite/dist/node/chunks/dep-DkOS1hkm.js:67489:22)
    at async CAC.<anonymous> (xxx/node_modules/vite/dist/node/cli.js:842:9)

The problem seems to be in LogicalExpression.render method here:

this.getUsedBranch().render(code, options, { // <--------
                isCalleeOfRenderedParent,
                preventASI,
                renderedParentType: renderedParentType || this.parent.type,
                renderedSurroundingElement: renderedSurroundingElement || this.parent.type
            });

Could you please suggest if this something not covered yet in rollup, or a misconfiguration on my side?

It is most probably a rollup error, I will check it later.

@mshabarov Could you please provide a minimal way to reproduce?

@liuly0322 not a minimal example project, unfortunately, but I'm able to reproduce with the example project that is attached to this issue- "k8s-demo-app.zip".

Download the project and run ./mvnw -B. Then the above error should show up in the console logs when Vite starts to build the bundle.

@liuly0322 not a minimal example project, unfortunately, but I'm able to reproduce with the example project that is attached to this issue- "k8s-demo-app.zip".

Download the project and run ./mvnw -B. Then the above error should show up in the console logs when Vite starts to build the bundle.

Yes, it is a rollup bug, thanks for spotting. It's weird that I don't know how to solve it now and will have a detailed look later.

some logs:

vite v5.2.8 building for production...
pass:  1
pass:  2
pass:  3
pass:  4
pass:  5
pass:  6
getUsedBranch called
getUsedBranch called
**include function called**
getUsedBranch called
pass:  7
pass:  8
deoptimizeCache called and reset usedBranch
pass:  9
pass:  10
pass:  11
pass:  12
pass:  13
pass:  14
pass:  15
pass:  16
pass:  17
pass:  18
pass:  19
pass:  20
pass:  21
pass:  22
pass:  23
โœ“ 738 modules transformed.
render called
getUsedBranchValue returns null...

It seems that there should be a new include call to this node after deoptimizeCache but there isn't.

The above issue has been fixed for us in rollup@4.16.3. Thanks a lot ๐Ÿ‘

This issue has been resolved via #5483 as part of rollup@4.17.0. You can test it via npm install rollup.

This issue has been resolved via #5483 as part of rollup@4.17.0. You can test it via npm install rollup.