每当我尝试使用
go run .
(在 Windows 上)运行用 GO 编写的任何脚本时,它都会返回以下错误:
exec: "C:\\Users\\matti\\AppData\\Local\\Temp\\go-build1549561893\\b001\\exe\\test_script": executable file not found in %PATH%
其中 test_script 是我尝试运行的脚本的名称。首先使用
go build .
构建脚本会产生一个没有扩展名的文件,该文件不是有效的可执行文件,即使我手动添加 .exe 也是如此。如果我使用构建标志 -o 表示它需要是一个 exe,则生成的 exe 不可运行。我使用的是 GO 1.22.2。
我的猜测是,该文件夹是临时构建脚本然后调用脚本的文件夹,但由于构建会产生不可运行的文件,因此无法找到它。
其次,exec 是一个 go 包(os/exec),这让我认为当调用
go run .
时,脚本会被编译,第二个 go 脚本会调用编译后的脚本,该脚本位于错误消息中存在的路径中,使用exec.Command,因为找不到脚本,所以认为原来的命令不存在。
到目前为止我尝试过的:
go env
到目前为止,这些方法都没有奏效。唯一的区别是 1.21.0 的错误如下:
exec: "C:\\Users\\matti\\AppData\\Local\\Temp\\go-build1705217788\\b001\\exe\\test_script": file does not exist
GO env 中的一些变量设置错误,即 GOARCH=wasm 和 GOOS=js。我一定是在使用 WebAssembly 时设置了它们。这反过来又编译了该环境的代码,并导致 Windows 无法运行可执行文件。
将它们改回 GOARCH=amd64 和 GOOS=windows 后,一切又恢复正常了。