Subscribe on changes!

3.2.38 regression error for multi-branch dynamic slots

avatar
Sep 12th 2022

Vue version

3.2.38, 3.2.39 (above commit 00036bb52c4e641b2be7fa55c39ced9448163b0f)

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?

https://github.com/vuejs/core/commit/00036bb52c4e641b2be7fa55c39ced9448163b0f#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
avatar
Sep 12th 2022

Duplicate of #6639

avatar
Sep 14th 2022

@shigma PR welcome.

avatar
Sep 21st 2022

@edison1105 I opened #6660. Is there any hope that we can get it in a future version?

avatar
Sep 27th 2022

Just hit this same issue upgrading from 3.2.37