小编Thi*_*man的帖子

如何将react-router useRouterHistory与redux-simple-router结合使用

我正在尝试使用react-router 2.0和redux-simple-router,但我不能让它与查询解析一起使用.这是我从文档中得到的:

const appHistory = useRouterHistory({
  parseQueryString: parse,
  stringifyQueryString: stringify
})
Run Code Online (Sandbox Code Playgroud)

但是如果我将历史传递给像这样的redux-simple-router ...

syncReduxAndRouter(appHistory, store, (state) => state.router)
Run Code Online (Sandbox Code Playgroud)

......我得到history.listen is not a function.直接使用来自react-router的browserHistory似乎可以正常使用redux-simple-router.为什么历史记录中缺少listen(),我该如何解决这个问题?

reactjs react-router react-router-redux

7
推荐指数
1
解决办法
5812
查看次数

如何根据分支设置工作流环境变量

我目前有两个几乎相同的 GitHub 操作工作流文件,只有一个配置为对分支上master的push/pull_requests 做出反应,另一个配置为production.

登台工作流程如下所示:

env:
  GCLOUD_PROJECT: my-project-stg
  VERCEL_TARGET: staging

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]
Run Code Online (Sandbox Code Playgroud)

生产工作流程开始如下:

env:
  GCLOUD_PROJECT: my-project-prd
  VERCEL_TARGET: production

on:
  push:
    branches: [ production ]
  pull_request:
    branches: [ production ]
Run Code Online (Sandbox Code Playgroud)

其余的工作流文件是相同的,所以这显然不是很 DRY。

我想有 1 个单一的工作流文件,并以某种方式根据分支名称在两组变量之间切换。有没有办法实现这一点,或者我可能从错误的角度来解决这个问题?

如果可以在共享基本定义上扩展两个工作流文件,我猜也可以解决这个问题。

github environment-variables github-actions

7
推荐指数
2
解决办法
4573
查看次数

Firebase httpsCallable 与“允许未经身份验证”的云函数

我有一些通过 httpsCallable 调用的 HTTP 函数。我注意到在 GCloud UI 中它们以authentication: Allow unauthenticated.

当您通过 httpsCallable 调用 HTTP 函数时,会自动包含用户身份验证令牌并为接收端进行解码。

我认为允许未经身份验证的函数调用一定是一件坏事,因此我从allUsers组中删除了 IAM 策略,如此处所述,但是这样做时我的应用程序停止工作,并出现如下错误:

[错误] 预检响应未成功

[错误]由于访问控制检查,Fetch API 无法加载https://europe-west2-my-project-dev.cloudfunctions.net/someFunction 。

我是否真的需要允许所有用户调用我的函数,即使它们是由已经通过 Firebase 身份验证的用户使用 httpsCallable 调用的?

我觉得这很令人困惑,所以希望有人能澄清这一点。

firebase firebase-authentication google-cloud-functions

7
推荐指数
1
解决办法
2451
查看次数

带有map和regexp的动态proxy_pass

我正在尝试使用以下模式.我需要在客户端代码中指定一个动态路径才能切换到一些预定义的主机.我通过将它们的别名附加到/ fwd/url来映射这些主机.别名映射到nginx中的真实服务器,如下所示:

map $uri $repoUrl {
    default             invalid;
    ~^/fwd/foo/.*        http://foo.domain.nl/;
    ~^/fwd/bar/.*        http://bar.domain.nl/;
  }
Run Code Online (Sandbox Code Playgroud)

然后在服务器配置部分中,我捕获以fwd开头的任何url并应用映射的别名值.在别名之后的url的剩余部分也应该附加到url.

location /fwd/(\w+)/(.*)$ {
  add_header X-FwdHost "$repoUrl$2";
  add_header Access-Control-Allow-Origin "*";
  proxy_pass         "$repoUrl$2";
  proxy_redirect off;
  access_log on;
}
Run Code Online (Sandbox Code Playgroud)

如果我测试这个:

curl -i http://localhost:8080/fwd/foo/something/else
Run Code Online (Sandbox Code Playgroud)

我明白了:

X-FwdHost: http://foo.domain.nl/
Run Code Online (Sandbox Code Playgroud)

但是当测试regexp的结果时,我得到:

 $1: foo
 $2: something/else
Run Code Online (Sandbox Code Playgroud)

总的来说它似乎正在发挥作用.正则表达式似乎没问题,但是我无法将它连接成一个字符串?任何想法或是否有更容易/更好的方法来实现同样的目标?

[编辑]

通过使用名为forward的查询参数,我发现了一种可能更简单的方法.首先将查询参数映射到正确的主机:

map $arg_forward $repo_forward {
default           http://invalid_repo_forward/;

foo              http://foo.domain.nl/;
bar              http://bar.domain.nl/;
Run Code Online (Sandbox Code Playgroud)

}

然后使用要转发的路径中的参数:

location /fwd/ {
  add_header X-FwdHost $repo_forward;
  add_header Access-Control-Allow-Origin "*";
  proxy_pass         $repo_forward;
  proxy_redirect off;
  access_log on;
}
Run Code Online (Sandbox Code Playgroud)

我希望和url像:

http://localhost:8080/fwd/?forward=foo
Run Code Online (Sandbox Code Playgroud)

以导致:

http://foo.domain.nl/
Run Code Online (Sandbox Code Playgroud)

......但是这仍然不起作用.我得到了404返回.我错过了什么?

regex configuration nginx

6
推荐指数
1
解决办法
1万
查看次数

如何监听特定的 Firestore 文档创建事件?

我正在实现一个命令/响应模式,其中用户通过add使用他自己的 userId 下的有效负载调用来写入命令集合,然后从类似的响应路径中获取数据。

但是下面的代码不起作用,因为 onSnapshot 无法侦听尚未创建的文档command.id/responses/{userId}/register集合中的文档)。使用 onCreate 处理程序很容易解决这个问题,该处理程序适用于云函数,但似乎不适用于 JS firebase 客户端 API。

这是使用redux-firestore和我的一些应用程序助手功能,但您会明白的。命令和响应文档结构使用类似于FSA 的{ payload, error}

云功能

export const register = functions.firestore
  .document("commands/{userId}/register/{commandId}")
  .onCreate(async event => {
    const payload = event.data.get("payload");
    const { userId, commandId } = event.params;
    const response = db.document(`responses/${userId}/register/${commandId}`)

    // possibly something bad will happen
    try {

      // do something with payload...

      return response.set({
        payload: "ok" // or pass relevant response data
      })
    } catch(err) {
      return …
Run Code Online (Sandbox Code Playgroud)

firebase google-cloud-firestore

6
推荐指数
0
解决办法
829
查看次数

如何使用 Yarn 工作区在 CRA 中导入通用模块?

我有一个使用 Yarn 工作区的 monorepo。我有一个基于 create-react-app 的包,它应该从公共模块(存储库中的兄弟包)导入。

这个通用包不包含任何 React 组件。只是业务逻辑。它的源代码是从 Typescript 转译而来的。通用包与其他包中的后端代码配合得很好。

开箱即用,这不适用于 CRA,并给我一个错误:

./src/App.tsx 找不到模块:无法解析“@gemini/common”

我需要做什么来配置 CRA 来查找模块?

我在 CRA monorepo 支持上发现了这个未解决的问题,但我不确定它是如何关联的,并且其中有很多信息。

create-react-app yarnpkg yarn-workspaces

6
推荐指数
1
解决办法
9588
查看次数

我如何将此要求转换为ES6导入样式

我想这样做

var debug = require('debug')('myapp');
Run Code Online (Sandbox Code Playgroud)

...在ES6中没有创建额外的变量.可以吗?

javascript import commonjs ecmascript-6

5
推荐指数
1
解决办法
2244
查看次数

为什么Map没有map方法?

为了"映射"一个Map对象,你必须首先将它解构为一个数组数组.这似乎是我的倒退.

有人可以向我解释一下这背后的设计理由是什么吗?我知道像Scala这样的其他语言确实有地图的地图方法,所以我试图理解为什么它们在Javascript中不可用.

这种语法似乎是不必要的复杂和冗长:

let mappedMap = new Map( 
  [...originalMap]
  .map(([k, v]) => [k * 2, '_' + v])
);
Run Code Online (Sandbox Code Playgroud)

难道不是这样的吗?

let mappedMap = originalMap.map((k, v) => [k * 2, '_' + v]);
Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

5
推荐指数
1
解决办法
149
查看次数

是否可以在Chrome devtools工作区中编辑Babel转换文件?

将文件的本地文件夹拖到devtools中会将它们添加到工作区,以便您可以持久地编辑它们.我刚刚发现了这个功能.然而,我的文件都是Babel被编译,然后我编辑了一个文件并点击cmd -s保存更改Chrome检查源并跳过es6 import语句,错误如下:Unexpected token import

有没有办法让chrome不检查语法?如果它只是编辑文件而不试图编译它,Babel就可以拿起它并通过热模块更换注入更改.

google-chrome-devtools ecmascript-6 babeljs

5
推荐指数
1
解决办法
135
查看次数

Kubernetes Engine无法从非私有/ GCR存储库中提取图像

我曾经愉快地部署到Kubernetes Engine了一段时间,但是在开发集成的云容器构建器管道时,我开始遇到麻烦。

我不知道发生了什么变化。我无法再部署到kubernetes,即使以前没有Cloud Builder时也是如此。

pod展开过程给出错误,表明它无法从注册表中提取。这似乎很奇怪,因为图像存在(我可以使用cli来拉出它们),并且向我的用户和云构建器服务帐户授予了所有可能相关的权限。

我收到错误ImagePullBackOff并在pod事件中看到此错误:

无法提取图像“ gcr.io/my-project/backend:f4711979-eaab-4de1-afd8-d2e37eaeb988”:rpc错误:代码=未知desc =未授权:需要身份验证

这是怎么回事?谁需要授权,目的是什么?

google-cloud-platform google-kubernetes-engine

5
推荐指数
2
解决办法
2359
查看次数