Comments (6)
I'm sorry, I haven't been able to reproduce this issue.
To reproduce, I used the following project.
package main
import (
"fmt"
"net/http"
"github.com/a-h/templ"
)
func main() {
mux := http.NewServeMux()
mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
templ.Handler(page()).ServeHTTP(w, r)
})
err := http.ListenAndServe("localhost:8080", mux)
if err != nil {
fmt.Println(err)
}
}
package main
templ page() {
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>
<title>Document</title>
</head>
<body>
for _, name := range []string{"name1", "name2"} {
{ name }
}
// bug-trigger
<p>THIS WILL BE RENDRED IF I UNCOMMENT THE LINE ABOVE</p>
</body>
</html>
}
templ generate --watch --proxy=http://localhost:8080 --cmd="go run ."
Here's a screen capture of what I see.
templ.reload.mp4
Reading back through the comments more closely, I see that this is actually related to having air and templ both trying to do hot reload at the same time. It seems you've got a solution, and documented it for others at #596
I'll close this.
from templ.
Can perhaps be related to that templ generate
will remove all _templ.txt
files.
But when you stop the templ generate -watch ...
the _templ.txt
files remains.
Fixing just this will not solve all the cases for this problem tho.
from templ.
Note: if there is a way to use templ generate -watch -proxy
to get hot-reload and also re-build go also when non related templ files are edited, that would be nice. :)
Since to problem above stems from me trying to get this by combining air
and templ watch proxy
.
from templ.
With some more testing, with the same approach of running go run .
and templ generate -watch -proxy="..."
.
The main issue seems to be that the go-server needs to restart preferably before the reload event is sent, but this seem to be hard to do without using the -cmd
flag.
By using the -cmd
flag I can't run air in a separate terminal, since that will lead to two go-servers running. :P
So I guess the workaround in the meantime is to just use -cmd=air
and let templ restart air.
from templ.
See #596 discussion for the semi-solution I ended up using.
@a-h it seems to me that there are some cases where there is a conflict between when the templ don't thinks it need to
re-generate GO code, but it has done it anyways, so _templ.go and _templ.txt don't match up? As in the case with this bug i think. (see steps to recreate in first comment)
Note: hope you're not bothered by me "spamming" a bit. :P
from templ.
Think I perhaps found the cause of this issue, since in this case I didn't rebuild GO so any changes to _templ.go
is not taken into effect for the current go-server.
If I edit a .templ
file by adding a new line with some text or html, both the _templ.go
and _templ.txt
is updated, but any additional changes to that same line will only update _templ.txt
.
It seems that \n
(new line) causes the _templ.go
to be rebuilt even tho I don't see a reason for why that has to be the case. If possible to build in a way that don't require this, we could have much more cases with faster
hot-reload since we can omit the rebuild of _templ.go
and go-server.
I haven't looked to much into the source code, so just throwing some thoughts around this. :P
from templ.
Related Issues (20)
- Investigate issue raised in vscode-go HOT 1
- LSP: Autocomplete seems broken HOT 2
- VS Code: Request textDocument/codeAction failed. HOT 1
- docs: TailwindCSS setup autocomplete no longer work HOT 8
- Vscode plugin crash HOT 4
- [question] go 1.22 iterators / rangefunc HOT 3
- Release `v0.2.731` breaks Mason.nvim integration HOT 5
- using context with implicit vs explicit import HOT 3
- Error with VSCode: Request textDocument/codeAction failed HOT 2
- LSP on Vscode Broken HOT 4
- Templ gopls functionality seems to still be broken with gopls `v0.16.x` and does not work with gopls `v0.15.3` anymore HOT 3
- Language server seg fault on VSCode HOT 13
- Deeply nested structs / maps are inaccessible and unusable - Ex data.Form.FieldErrors.NewEmail undefined (type validator.FieldErrors has no field or method NewEmail) HOT 5
- bug: "github.com/a-h/templ/runtime" imported as templruntime and not used HOT 2
- Getting this error while using the latest version or templ and gopls HOT 11
- proposal: improve developer experience for basic passing of data to JS expressions HOT 8
- Templ config for passsing additional variables to component HOT 1
- Proxy not ready, retrying infinitely HOT 2
- Improved dev flow HOT 1
- Proposal: Introduce JsGenericVar for Event and Element Access in element event handlers HOT 5
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from templ.