Skip to content

3.2.38 regression error for multi-branch dynamic slots #6651

@shigma

Description

@shigma

Vue version

3.2.38, 3.2.39 (above commit 00036bb)

Link to minimal reproduction

https://sfc.vuejs.org/#eNqFUstOwzAQ/BXLHHppbImeqAIq4jd8CckGDPFD6004RPl31klapUXAzTszOxOPM8rnGNXQgzzKMtVoI4kE1Mcn462LAUmMAqEVk2gxOLFj6e5CvQQXV1zpPGQnpku9WLEJDwQudhUBT0KUWTafDF0YcVcHT+BJDIVtH40k7MHIWcYr+srhlz3oEvy/XM6fyccNLvdyuU/hqqg+UvBcxjhHrUQy8ihmJGN8xzwb+U4U01Hr3sfPN1UHp0/Maew9WQdFE9zpoO7V4UE3NtEWV5Bc8YrhKwFyopH7jblmcAAsEHwDCPhn2I32KvCG+xGaMyfjJy7g/Hj5N9gUxl03djhXmbpAwlcOuOS1eO6ZH5vxtd1FvS13+gZ/SNE7

Steps to reproduce

Build the project with SSR.

What is expected?

The build should pass.

What is actually happening?

TypeError: Cannot set properties of undefined (setting 'key')
    at slots.<computed>

System Info

System:
    OS: Windows 10 10.0.19044
    CPU: (8) x64 Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
    Memory: 12.46 GB / 23.84 GB
  Binaries:
    Node: 16.15.1 - C:\Program Files\nodejs\node.EXE
    Yarn: 1.22.15 - ~\AppData\Roaming\npm\yarn.CMD
    npm: 8.11.0 - C:\Program Files\nodejs\npm.CMD
  Browsers:
    Chrome: 105.0.5195.102
    Edge: Spartan (44.19041.1266.0), Chromium (105.0.1343.33)
    Internet Explorer: 11.0.19041.1566

Any additional comments?

00036bb#diff-38ca58cc499824842d1f7106fb614647e756cbdc1982bc04cd3c10fb379893c1R33-R36

res may be undefined. Adding a nullable check may help. If this change is acceptable I am willing to provide a PR.

            const res = slot.fn(...args)
+           if (!res) return res
            // attach branch key so each conditional branch is considered a
            // different fragment
            ;(res as any).key = slot.key
            return res

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions