Google 有为App Engine Standard 设置外部 IP的文档。但是,我需要为 App Engine Flex 设置外部 IP。
我已按照教程操作,成功创建了一个带有连接到外部静态 IP 的 Cloud Router 和 Cloud NAT 的子网。我通过在其中创建虚拟机实例来测试该设置是否有效,并发现所有出口流量确实源自保留的外部静态 IP。
但是,当我将 App Engine Flex 应用程序部署到该子网时,其请求不会通过保留的静态 IP 进行路由,而是似乎使用 Google 提供的共享 IP 地址池。一切正常,没有部署错误,只是未使用保留的外部IP。该应用程序在 app.yaml 中分配给子网:
network:
name: default
subnetwork_name: app-engine-subnet
Run Code Online (Sandbox Code Playgroud)
有关让此 Flex 实例通过保留的外部 IP 路由其出口流量的任何提示吗?我知道可以使用虚拟机实例作为代理来完成此操作,但我更喜欢使用 Cloud NAT。
用于从 props 中提取主题数据的插值函数会产生“缺少函数返回类型”。eslint 错误。我已经使用声明合并来输入我的主题数据,如typescript 文档中所述。合并似乎工作正常,因为props.theme是根据我的声明输入的。
该问题可以通过为插值函数指定返回类型来解决
${(props): string => props.theme.colors.secondary}
但我认为这不是必要的,因为我已经props.theme.colors.secondary在类型声明文件中指定了类型。此外,在 vs code 错误弹出窗口中,似乎返回类型是已知的 ( function(...): string),但仍然给出错误。
GitHub 中的代码。
// App.tsx
import React from 'react';
import styled, { ThemeProvider } from 'styled-components';
import theme from 'theme/default';
const StyledApp = styled.div`
// The error is caused by this interpolator function
background-color: ${(props) => props.theme.colors.secondary};
`;
Run Code Online (Sandbox Code Playgroud)
// styled.d.ts
import 'styled-components';
// Extend the default theme type
declare module 'styled-components' {
export interface DefaultTheme { …Run Code Online (Sandbox Code Playgroud)