# Plugin "Duplicate export" error after Discourse update

**URL:** https://meta.discourse.org/t/plugin-duplicate-export-error-after-discourse-update/398882
**Category:** Development
**Tags:** plugin-api
**Created:** [March 20, 2026, 1:31pm UTC](https://meta.discourse.org/t/plugin-duplicate-export-error-after-discourse-update/398882 "2026-03-20T13:31:32Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![LeoDavidson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/leodavidson/32/119574_2.png) [@LeoDavidson](https://meta.discourse.org/u/LeoDavidson)
#### Post date: [March 20, 2026, 1:31pm UTC](https://meta.discourse.org/t/plugin-duplicate-export-error-after-discourse-update/398882/1 "2026-03-20T13:31:32Z")

</div>

Updating to 2026.3.0-latest has broken my plugin again.

Can anyone help explain what is wrong?

I see this error in the F12 console in Chrome:

```plaintext
app.js:73 Failed to load plugin discourse-directoryopus from https://resource.dopus.com/assets/js/plugins/discourse-directoryopus_main-iafcdugp.digested.js Error: [PLUGIN discourse-directoryopus] Compile error: RollupError: discourse/plugins/discourse-directoryopus/virtual:entrypoint:main (60:12): Duplicate export "discourse$templates$connectors$user __card__ post __names$directoryopus__ link __status__ card$$__module"
    at discourse-directoryopus_main-iafcdugp.digested.js:1:7

```

I think that points back to this file:

> <https://github.com/LeoDavidson/discourse-directoryopus/blob/master/assets/javascripts/discourse/templates/connectors/user-card-post-names/directoryopus-link-status-card.js.es6>

But that hasn’t changed in years, and only exports one thing.

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [March 20, 2026, 1:40pm UTC](https://meta.discourse.org/t/plugin-duplicate-export-error-after-discourse-update/398882/2 "2026-03-20T13:40:39Z")

</div>

looks like it may be related to this?

> [@Introducing a new build system for plugins](https://meta.discourse.org/t/introducing-a-new-build-system-for-plugins/398713):
>
> Over the last few months, we’ve been working on a new build system for plugin JavaScript code. This will bring plugins up-to-date with the changes we made to the theme build system back in July 2025, which lean on more modern browser technologies and JS build tooling. This change is largely backwards-compatible. Most plugin authors won’t need to do anything. tadaBenefits As well as the behind-the-scenes modernization, this change will bring a number of functional benefits to Discourse devel…

---

<div class="post-metadata">

### Author: ![david](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/david/32/157490_2.png) [@david](https://meta.discourse.org/u/david)
#### Post date: [March 20, 2026, 3:23pm UTC](https://meta.discourse.org/t/plugin-duplicate-export-error-after-discourse-update/398882/3 "2026-03-20T15:23:51Z")

</div>

This should take care of it:

[https://github.com/discourse/discourse/pull/38755](https://github.com/discourse/discourse/pull/38755)

---

<div class="post-metadata">

### Author: ![LeoDavidson](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/leodavidson/32/119574_2.png) [@LeoDavidson](https://meta.discourse.org/u/LeoDavidson)
#### Post date: [March 20, 2026, 4:38pm UTC](https://meta.discourse.org/t/plugin-duplicate-export-error-after-discourse-update/398882/4 "2026-03-20T16:38:16Z")

</div>

Confirming the fix worked. Many thanks!

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [April 19, 2026, 4:38pm UTC](https://meta.discourse.org/t/plugin-duplicate-export-error-after-discourse-update/398882/5 "2026-04-19T16:38:35Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
