我正在使用Go开发Rest API,但是每次尝试使用来运行我的应用程序
go run main.go
Windows防火墙告诉我这已阻止了我的应用程序的某些功能。我想知道是否有某种方法可以执行我的处决而不必每次都接受。
答案 0 :(得分:11)
改变
http.ListenAndServe(":3000", r)
到
http.ListenAndServe("127.0.0.1:3000", r)
注意:我使用的是大猩猩复用器
答案 1 :(得分:3)
嗨,我遇到了同样的问题: 试试这个:
答案 2 :(得分:1)
如果您正在呼叫go run main.go
,则正在发生以下情况:
但是临时文件夹仅用于一次执行。因此,下次您通过go run
运行程序时,将使用另一个文件夹。
Windows防火墙确实会始终为您提供服务器所具有的路径的信息,如果您每次都记住路径,就会发现总是存在不同的路径。
Windows防火墙的配置方式如此,以至于它可以记住每个程序的路径。因此,当路径更改时,您始终需要确认允许 new 路径在该端口上运行。
要解决此问题,您应该编译服务器。只需运行go build
并执行二进制文件,然后在项目文件夹中即可。然后,您只需要接受一次即可。
答案 3 :(得分:1)
基于@apxp 答案
在 windows cli 这对我有用
go build main.go && main.exe
答案 4 :(得分:1)
这对我有用
go build main.go && .\main.exe
并使用 makefile 运行
答案 5 :(得分:0)
我认为@apxp的答案是对情况的完整解释;问了这个问题一段时间后,我找到了一种使用以下方式运行应用程序的方法:
go build -o ejecutable.exe ; if($?) { .\ejecutable.exe }
答案 6 :(得分:0)
只需转到Windows防火墙通知设置:
Control Panel -> Windows Defender Firewall -> Change notification settings
取消选中 Windows Defender防火墙阻止新应用时通知我的选项,以防止其显示弹出窗口。
答案 7 :(得分:0)
您可以使用 CompileDaemon 在文件更改时自动重新构建您的项目,因为无论如何它都会运行构建,您只需要接受一次。此外,您的项目将自动重新构建!
安装:
go get https://github.com/githubnemo/CompileDaemon
示例用法:
# Assuming your project looks like and you're in your project working dir
# hello/
# hello.go
# Rebuild on .go file edits and run the hello command after
CompileDaemon -command="./hello"