Skip to content

Module-level binding in svelte 3.16 #4086

@rootasjey

Description

@rootasjey

Hi, after I updated svelte to the version 3.16.0, the build command doesn't work anymore.

Modules versions:

  • "svelte": "3.16.0"
  • "rollup-plugin-svelte": "5.1.1",

Output:

⟩ yarn run build
yarn run v1.19.1
$ rollup -c

src/main.js → public/bundle.js...
[!] (plugin svelte) TypeError: Cannot read property 'index' of undefined
src/components/Header.svelte
TypeError: Cannot read property 'index' of undefined
    at Renderer.invalidate (/Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/svelte/src/compiler/compile/render_dom/Renderer.ts:169:35)
    at bind_this (/Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/svelte/src/compiler/compile/render_dom/wrappers/shared/bind_this.ts:32:22)
    at ElementWrapper.add_bindings (/Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/svelte/src/compiler/compile/render_dom/wrappers/Element/index.ts:592:29)
    at ElementWrapper.render (/Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/svelte/src/compiler/compile/render_dom/wrappers/Element/index.ts:380:8)
    at FragmentWrapper.render (/Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/svelte/src/compiler/compile/render_dom/wrappers/Fragment.ts:151:18)
    at new Renderer (/Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/svelte/src/compiler/compile/render_dom/Renderer.ts:95:17)
    at dom (/Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/svelte/src/compiler/compile/render_dom/index.ts:17:19)
    at render_dom (/Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/svelte/src/compiler/compile/index.ts:97:6)
    at /Users/jeremiecorpinot/GitHub/memorare/front-app/node_modules/rollup-plugin-svelte/index.js:252:22

error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

What's in the file:
Header.svelte

<script context="module">
  let domHeader
  // ...other variables

  export function hideHeader() {
   // ...function's body
  }
</script>

<script>
  // ...some JavaScript code
</script>

<style>
  /*...some styles */
</style>

<header>
  <!-- some dom -->
</header>

To see the full code you can go to my repo Header.svelte

The same code works with the svelte version 3.15.0
The bug appears when I require the exported functions in the script module with svelte 3.16.0.

Example:

// Some other module

import { hideHeader } from 'Header.svelte';

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions