小编kat*_*aik的帖子

为什么类型“Pick<T, K> & Omit<T, K>”不可分配给类型“T”?

我发现了一个令人费解的错误,假设我想要一个相当无用的函数,它合并一个对象的两个互补部分:

function foo<T extends object, K extends keyof T>(a: Pick<T, K>, b: Omit<T, K>): T {
    return { ...a, ...b } // TS2322: Type 'Pick<T, K> & Omit<T, K>' is not assignable to type 'T'. 'Pick<T, K> & Omit<T, K>' is assignable to the constraint of type 'T', but 'T' could be instantiated with a different subtype of constraint 'object'.
}
Run Code Online (Sandbox Code Playgroud)

我收到上面的错误,而下面的代码显然有效:

interface Test {
    a: string,
    b: string
}

const a: Pick<Test, 'a'> = { a: 'a' }
const …
Run Code Online (Sandbox Code Playgroud)

typescript

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

用gitlab ci运行sonarqube扫描仪

我正在尝试使用以下堆栈(仅相关的堆栈)为.NET应用程序组合CI环境:

  • Debian + mono
  • 搬运工人
  • Gitlab CI
  • Gitlab-multi-runner(作为docker容器)
  • Sonarqube + Postgre

我已经使用docker-compose为sonarqube和postgre创建容器,两者都在运行和工作.我很遗憾地执行了由gitlab运行程序执行的构建的sonarqube分析以及我发现使用Maven的所有示例.我也试过使用声纳扫描仪,到目前为止没有运气.

以下是我的gitlab-ci.yml的内容:

image: mono:latest

cache:
  paths:
  - ./src/T_GitLabCi/packages/

stages:
  - build

.shared: &restriction
  only:
    - master
  tags:
    - docker

build:
  <<: *restriction
  stage: build
  script:
    - nuget restore ./src/T_GitLabCi
    - MONO_IOMAP=case xbuild /t:Build /p:Configuration="Release" /p:Platform="Any CPU" ./src/T_GitLabCi/T_GitLabCi.sln
    - mono ./tools/NUnitConsoleRunner/nunit3-console.exe ./src/T_GitLabCi/T_GitLabCi.sln --work=./src/T_GitLabCi/test --config=Release
    - << EXECUTE SONAR ANALYSIS >>
Run Code Online (Sandbox Code Playgroud)

我在这里肯定遗漏了一些东西.有人能指出正确的方向吗?

mono docker sonarqube gitlab-ci

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

为什么await 包括所有其他失败的承诺?

我有一个关于 Promise 在 Node.js 中如何工作的基本问题(在浏览器中,行为符合预期),请考虑以下函数作为示例:

async function proc(): Promise<void> {
  const resolve = new Promise((resolve) => setTimeout(resolve, 0))
  const reject = Promise.reject('reject')

  console.log(await resolve)

  try {
    await reject
  } catch (err) {
    console.error(err)
  }
}
Run Code Online (Sandbox Code Playgroud)

由于拒绝更快地出列,因此它被抛出await resolve,并且由于它没有在那里处理,所以我们得到了未处理的拒绝。

尽管有很多解决方案可以解决这个问题,但我发现这种行为违反直觉。是否有任何原因导致传递给的对象reject()在相应的 Promise 被执行时没有被抛出await,类似于传递给的对象resolve()在 时如何返回await?

我期望await做这样的工作:

await(promise) {
  let result, error;

  promise
    .then((data) => result = data)
    .catch((err) => error = err)

  // wait for promise magic

  if (error != null) { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js promise async-await typescript

3
推荐指数
1
解决办法
114
查看次数

Sonarqube 未注册任何 c# 问题

可能与此问题类似,但由于先前版本已经回答了该问题,因此我会为其打开一个新问题。

尽管我有意将代码气味放入我的源代码中,但 sonarqube 并未发现任何问题。生成分析报告 ( 101 KB ),压缩并成功上传。从扫描仪端执行是成功的。

开发配置:

  • IDE:Visual Studio Enterprise 2015 v14.0.25425.01 更新 3
  • 框架:v4.6.01055
  • 语言:C# 6

构建配置:

  • 主机:Docker over Debian ( v4.4.0.38 )
  • Sonarqube:v6.1优于 PostgreSQL v9.6.0
  • C#插件v5.3.2
  • 扫描:扫描仪SonarQube V2.6.1
  • 引擎:mono v4.6.1.0,XBuild v14.0
  • CLR:v4.0.30319.42000

声纳扫描仪结果:

INFO: Scanner configuration file: /opt/sonar-scanner-2.6.1/conf/sonar-scanner.properties
INFO: Project root configuration file: /builds/kataik/gitlab_test/sonar-project.properties
INFO: SonarQube Scanner 2.6.1
INFO: Java 1.8.0_92 Oracle Corporation (64-bit)
INFO: Linux 4.4.0-38-generic amd64
INFO: User cache: /opt/sonar-scanner-2.6.1/.sonar/cache
INFO: …
Run Code Online (Sandbox Code Playgroud)

.net code-analysis sonarqube

2
推荐指数
1
解决办法
1548
查看次数

使用nginx容器作为反向代理时的原始url

我有一个 Web 应用程序部署为docker 容器。我还设置了一个nginx容器(使用dnsmasq解析器)作为 Web 应用程序前面的反向代理,它的 80 端口映射到主机。我的应用程序使用 SSO 身份验证。

当我使用身份提供商登录时,回调 url 似乎是我的 Web 应用程序的内部域名,而不是主机上的正确 url。

我的 Nginx 配置:

server {
    resolver 127.0.0.1 valid=1s ipv6=off;
    set $upstream_endpoint http://myapp:5000;
    listen 80;

    location / {
      proxy_pass $upstream_endpoint;
    }
}
Run Code Online (Sandbox Code Playgroud)

sso 尝试重定向到的回调 URL 是http://myapp:5000而不是http://myhost.com:80,这显然会失败,因为它是内部的。

有人可以帮我找到如何正确设置 nginx 吗?

nginx single-sign-on docker

2
推荐指数
1
解决办法
522
查看次数

Knockout.js嵌套的viewmodel不起作用

我是ko的新手,但找不到我的问题的解决方案.我尝试将可绑定属性组织到视图模型层次结构中.根据文档,在我看来,以下应该有效,但事实并非如此.你有什么提示吗?

function AppViewModel() {
    this.nested = new NestedViewModel();
}

function NestedViewModel() {
    this.firstName = ko.observable();
     this.lastName = "Bertington";
}

ko.applyBindings(new AppViewModel());
Run Code Online (Sandbox Code Playgroud)

并在这里使用:

<p data-bind="with: nested">

<p>First name: <input type="text" data-bind="value: firstName, valueUpdate: afterkeydown"></input></p>
<p>Last name: <strong data-bind="text: firstName"></strong></p>

</p>
Run Code Online (Sandbox Code Playgroud)

javascript knockout.js

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