使用本地、纱线工作区依赖项和生产环境例如 App Engine环境变量进行构建?

问题描述

我一直致力于通过 Google App Engine 部署全栈应用程序。如果我尝试让 App Engine 从源代码构建,Google 的构建包显然不知道如何处理我的 Yarn 工作区依赖 URL。所以对于客户端,我只是在本地构建并部署静态资产。没问题。 (这是 Deploying yarn workspace monorepo app with internal dependencies to Google App Engine 的部分解决方法,更确切地说,How can I deploy to Google App Engine an app that depends on a yarn workspaces without publishing the packages to a npm registry?

这对客户端来说很好,但我在部署后端时遇到了问题:显然,服务器应该侦听 App Engine 环境的 PORT env var。我能想到的唯一方法是部署源代码并允许它通过 Google App Engine 构建;但是,正如我所提到的,这与工作区依赖 URL 不兼容。如果我在部署到 GAE 之前在本地构建它,节点应用程序仍然运行(甚至可以执行出口),但是因为它没有侦听 PORT env var,服务器不接受任何请求。我不想发布后端的工作区级 deps。

我确定有人必须有部署 node 应用程序的经验,该应用程序依赖于 Yarn 工作区级依赖项和生产环境范围环境变量。你能给我一些指导吗?

解决方法

(编辑:最好采用 jonrsharpe 在上述评论中描述的范式——也就是说,从实际生产环境(即 App Engine)中检索环境变量,而不是将它们烘焙到构建中。)

我只需要监听 8081 端口(即在本地构建,将 PORT 设置为 8081,然后部署构建的服务器)。也许 8080 被默认服务(在我的情况下是客户端)或 nginx 占用。我不太确定,但我现在要继续。