我创建的web应用程序由两个独立的部分组成:服务器和客户端。我想把它部署到谷歌云应用引擎。
我已经这样做了,但是主要的问题是我需要在.yaml
文件中定义的应用程序的正确工作的env_variables
失效。
我不明白为什么环境变量不工作,如果我按照docs.
我写了.yaml
文件到每个部分。这里的文件结构:
/
——客户机/
source_files…
——client.yaml
——服务器/
source_files…
——api.yaml
——dispatch.yaml
这里是每个文件的内容。
client.yaml:
runtime: nodejs16
service: default
handlers:
- url: /(.*..+)$
static_files: build/1
upload: build/(.*..+)$
- url: /.*
static_files: build/index.html
upload: build/index.html
env_variables:
API_LINK: "https://gcloudezample-11111.lm.r.appsport.com"
api.yaml:
runtime: nodejs16
service: api
env: standard
env_variables:
MONGO_DB_PWD: "db_password"
dispatch.yaml:
dispatch:
- url: '*/api'
service: api
然后我按照上面的顺序将这些部分部署到.yaml
文件中。
结果是前端工作,但失败的api请求,因为错误的请求URL:http://localhost:3001/v1/my-route
这是一个关于网站如何运作的常见误解。花2秒钟思考一下:你的前端部分在做什么?
让我来帮你
handlers:
- url: /(.*..+)$
static_files: build/1
upload: build/(.*..+)$
- url: /.*
static_files: build/index.html
upload: build/index.html
它只提供静态文件。因此,只有静态文件意味着在运行时上下文中没有处理、没有实例、没有变量定义,因为只有静态文件被服务。
运行时在运行JS代码的客户端浏览器上。
注意:对等的巨大优势是,静态页面服务是免费的(就资源使用而言,因为没有实例启动和运行来为您的文件提供服务;
现在,如何解决这个问题呢?
只需在静态代码中使用API_LINK值构建静态文件。