Google App Engine:修改云运行环境

2024-06-20

我正在尝试部署一个使用自定义 Node.js 服务器的 Next.js 应用程序。

我想将自定义构建变量注入应用程序:

next.config.js

const NODE_ENV = process.env.NODE_ENV;
const envType = NODE_ENV === `production` ? `production` : `staging`;

const envPath = `./config/${envType}`;
const { env } = require(envPath);

module.exports = {
  env: { ...env },
};

上面的文件在构建时运行(yarn build).

问题是 Google App Engine 在幕后使用 Cloud Build。在那里,NODE_ENV始终设置为development。我怎样才能覆盖NODE_ENV那里;即如何自定义用于 Google App Engine 的 Cloud Buildgcloud app deploy?

我不能只使用 Docker 因为这个问题 https://stackoverflow.com/questions/55885235/next-js-infinite-reload-from-docker-container.

包.json

{
  "name": "blah",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "dev": "NODE_ENV=staging node server.js",
    "build": "rm -rf node_modules/ && yarn && rm -rf .next/ && next build",
    "start": "node server.js",
    "lint": "eslint . --ext .js",
    "gcp-build": "yarn build"
  },
  "dependencies": {
    "body-parser": "^1.18.3",
    "dotenv": "^7.0.0",
    "dotenv-webpack": "^1.7.0",
    "express": "^4.16.4",
    "express-session": "^1.16.1",
    "firebase": "^5.10.0",
    "firebase-admin": "^7.3.0",
    "isomorphic-unfetch": "^3.0.0",
    "lodash": "^4.17.11",
    "next": "^8.1.0",
    "now": "^15.0.6",
    "react": "^16.8.6",
    "react-dom": "^16.8.6",
    "session-file-store": "^1.2.0",
    "styled-components": "^4.2.0",
    "yenv": "^2.1.0"
  },
  "devDependencies": {
    "babel-eslint": "^10.0.1",
    "eslint": "^5.16.0",
    "eslint-config-airbnb": "^17.1.0",
    "eslint-plugin-import": "^2.17.2",
    "eslint-plugin-jsx-a11y": "^6.2.1",
    "eslint-plugin-react": "^7.12.4"
  },
  "engines": {
    "node": "10.x.x"
  }
}

app.yaml

runtime: nodejs10

image

下面是传递一个的输出DOGE_ENV变量来自app.yaml。正如你所看到的,它是undefined。然而,NODE_ENV is development.

也就是说,添加以下内容app.yaml不起作用。

env_variables:
  DOGE_ENV: production

不要使用 NODE_ENV,创建您自己的环境变量并使用它:

App.yaml

env_variables:
  ST_ENV: Production

next.config.js

const environment = process.env.ST_ENV;
const envType = environment === `production` ? `production` : `staging`;

const envPath = `./config/${envType}`;
const { env } = require(envPath);

module.exports = {
  env: { ...env },
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google App Engine:修改云运行环境 的相关文章

随机推荐

  • static 变量和 const 变量有什么区别?

    有人可以解释一下 a 之间的区别吗static and const多变的 恒定值不能改变 静态变量存在于函数或类中 而不是实例或对象中 这两个概念并不相互排斥 可以一起使用
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 将 c3p0 与 Tomcat 8 数据源结合使用

    我有一个加载了数据源的 tomcat 8 服务器 我想知道是否可以将这个DataSource与c3p0连接池管理结合使用 到目前为止 这是我尝试过的 上下文 xml
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • C 编程:seg 错误、printf 和相关的怪癖[重复]

    这个问题在这里已经有答案了 正如许多年轻的程序员所做的那样 我了解到在代码中的不同点插入大量 here1 here2 等打印到控制台语句的有用性 以找出我的程序何时出错 在我的计算机科学学习过程中 这种强力调试技术已经拯救了我很多很多次 然
  • 在 R 中使用 Huggingface Transformer 模型

    我正在尝试在 R 中使用不同的 Huggingface 模型 这是通过 reticulate 导入 Transformer 包来实现的 谢谢 https rpubs com eR ic transfoRmers https rpubs co
  • NoSuchMethodError:尝试调用非函数,例如 null:'dart.global.firebase.auth'

    Flutter 新手 我怀疑在尝试设置 Firebase Auth 时错过了一些非常简单的事情 一直在网上寻找解决方案 大多数人要求您仔细检查 firebase auth js 是否正确包含在 index html 文件中 这样就完成了 下
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • .NET 内存不足故障排除

    在阅读了几篇有关 NET 技术中的内存的启发性文章后 Out of Memory 不是指物理内存 https learn microsoft com en us archive blogs ericlippert out of memory
  • Android 深度链接至 Instagram 应用

    Instagram 已经发布了 iOS 深层链接的 url 方案 但尚未为 Android 创建文档 有没有办法深入链接到 Android 上的 Instagram 应用程序 以转到 Instagram 应用程序中的特定位置 例如 Inst
  • 循环预定义值

    有没有办法在 oracle 中执行 for every 如下所示 begin for VAR in 1 2 5 loop dbms output put line The value VAR end loop end 我知道你可以这样做 b
  • DownloadStringAsync 首次调用时会阻止线程 14 秒

    这种情况只发生在我的一台机器上 我认为是环境配置问题 所有计算机均运行 ESET Smart Security 软件防火墙 有任何想法吗 using System using System Net using System Diagnost
  • Excel VSTO 工作簿新活动

    在 Excel 2007 的一个 Excel 插件项目中 我需要检查创建新工作簿的事件 我还需要捕捉 Workbook Open 事件 我很容易做到这一点 在我在互联网上的研究中 我发现了以下内容 打开任何工作簿时都会引发 Applicat
  • 如何解决asp.net core mvc项目中的“未找到视图”异常

    我正在尝试使用 VS Code 创建一个在 OSX 上运行的 ASP NET Core MVC 测试应用程序 访问默认主页 索引 或我尝试过的任何其他视图 时 我收到 未找到视图 异常 这是启动配置 public void Configur
  • 从Django中具有外键关系的两个表中检索数据? [复制]

    这个问题在这里已经有答案了 This is my models py file from django db import models class Author models Model first name models CharFie
  • 使用 Kentor.AuthServices.StubIdp 作为生产 IDP

    我正在尝试在我的应用程序中实现 IDP SAML2 服务器 鉴于我的应用程序拥有所需的所有数据 我不希望我的任何合作伙伴要求我们的客户在他们这边注册 我对 SAML2 协议不是很熟悉 我找到了这个项目Kentor AuthServices
  • 透视变换矩阵的计算

    给定 3D 空间中的一个点 如何计算齐次坐标中的矩阵 将该点投影到平面上z d 其中原点是投影中心 好吧 让我们尝试解决这个问题 扩展伊曼纽尔的答案 Assuming如果您的视图向量直接沿着 Z 轴 则所有尺寸都必须按视图平面距离的比例进行
  • 使用 Json.NET,在序列化对象时如何加密任何类型的选定属性?

    我想概括一下这个答案 https stackoverflow com a 29240043 3744182 by 布赖恩 罗杰斯 https stackoverflow com users 10263 brian rogers to 序列化
  • Google App Engine:修改云运行环境

    我正在尝试部署一个使用自定义 Node js 服务器的 Next js 应用程序 我想将自定义构建变量注入应用程序 next config js const NODE ENV process env NODE ENV const envTy