我使用Google Cloud Platform(GCP)和Golang。
我的本地环境可以运行代码,但是生产环境(GCP)无法运行。
我看到了日志。 =>
open stylesheet/qrcode.png: no such file or directory
read-only file system
所以我尝试使用chmod。例如chmod 644或777 qrcode.png
我正在尝试创建图像:qrcode.png
<=它是虚拟文件。
但是代码无法运行。
还有其他方法吗?
package main
import (
"fmt"
"image/png"
"log" ............
"github.com/boombuler/barcode"
"github.com/boombuler/barcode/qr"
)
func createQr() {
rand.Seed(time.Now().UnixNano())
result = ""
for i := 0; i < 4; i++ {
s := strconv.Itoa(rand.Intn(10))
result = result + s
}
qrCode, _ := qr.Encode(result, qr.M, qr.Auto) //info
qrCode, _ = barcode.Scale(qrCode, 200, 200) //size
PIN, _ = strconv.Atoi(result)
file, _ := os.Create("stylesheet/qrcode.png")
defer file.Close()
// encode the barcode as png
png.Encode(file, qrCode)
fmt.Println(file)
starttime = time.Now()
}
file, _ := os.Create("stylesheet/qrcode.png")
此代码无效。
答案 0 :(得分:2)
如果您要部署到App Engine标准版,则只能写入/tmp
folder in the filesystem。
尽管要谨慎处理生成的文件。在一个实例的文件系统中生成该文件后,该文件就无法像应用程序的CSS和JS文件一样提供服务。另外,实例是无状态的,您的下一个请求可能会碰到任何其他实例,并且任何实例通常都会被自动缩放器关闭。
我的建议是:
ResponseWriter
(实现io.Writer
)并设置适当的响应标头content-type
。无需使用文件。此外,请务必检查并处理错误,切勿用_
吞下它们!
答案 1 :(得分:0)
您的生产环境是否具有要导入的github的网络路径。查看您的日志文件,您可能会发现它找不到github。大多数生产环境都没有通往Internet的网络路径。
您必须下载这些外部软件包并将其作为代码库的一部分寄出。