withastro / compiler

The Astro compiler. Written in Go. Distributed as WASM.
Other
496 stars 59 forks source link

Scripts fail to run when they are the only tag on page #876

Open Serenacula opened 1 year ago

Serenacula commented 1 year ago

Astro Info

Astro                    v3.2.0
Node                     v18.18.0
System                   macOS (arm64)
Package Manager          yarn
Output                   static
Adapter                  none
Integrations             @astrojs/prefetch

If this issue only occurs in one browser, which browser is a problem?

No response

Describe the Bug

Given the following code:

<script>
    console.log("hi!")
</script>

nothing happens. If you add a div:

<script>
    console.log("hi!")
</script>
<div />

then it suddenly runs in console.

What's the expected result?

The script should run even without other tags present.

Link to Minimal Reproducible Example

https://stackblitz.com/edit/github-kwyexm?file=src%2Fpages%2Findex.astro,src%2Fpages%2FwithoutDiv.astro,src%2Fpages%2FwithDiv.astro

Participation

DevRohit06 commented 1 year ago

The script tag runs without any elements. But we have to use is:inline in script tag

<script is:inline> console.log("hi!") </script>

this works and got "hi!" in console

bluwy commented 1 year ago

Looks like in the compiler we need to emit ${$$maybeRenderHead($$result)} so the render would attach the script here. The additional <div/> in the repo triggered adding ${$$maybeRenderHead($$result)} which made it work.

lilnasy commented 1 year ago

@bluwy do you plan on working on this?

bluwy commented 1 year ago

Not yet. Feel free to take it!

lilnasy commented 1 year ago

One of the tests I broke pointed me to this PR.

It seems like this behavior was introduced intentionally.