小编Wes*_*den的帖子

NDK找不到应用程序目录

运行ndk-build命令时,出现以下错误:

Android NDK: Could not find application project directory !    
Android NDK: Please define the NDK_PROJECT_PATH variable to point to it.
Run Code Online (Sandbox Code Playgroud)

我的Android.mk文件的内容:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := FRE
LOCAL_SRC_FILES := FlashRuntimeExtensions.so
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := NativeQCAR
LOCAL_SRC_FILES := main.c
LOCAL_SHARED_LIBRARIES := FRE
include $(BUILD_SHARED_LIBRARY)
Run Code Online (Sandbox Code Playgroud)

添加以下行没有帮助:

NDK_PROJECT_PATH = C:/Users/Wessel/Dropbox/workspace/eclipse/NativeQ
Run Code Online (Sandbox Code Playgroud)

makefile android-ndk

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

Slim 3在中间件中获取当前路由

我想在中间件类中获取当前I路由的名称.以前(在Slim 2.*中)你可以像这样获取当前路线:

$route = $this->app->router->getCurrentRoute();

但是这个功能已经在3.0版的Slim中被删除了.我在以下__invoke方法中找到了以下代码Slim\App:

    // Get the route info
    $routeInfo = $request->getAttribute('routeInfo');

    /** @var \Slim\Interfaces\RouterInterface $router */
    $router = $this->container->get('router');

    // If router hasn't been dispatched or the URI changed then dispatch
    if (null === $routeInfo || ($routeInfo['request'] !== [$request->getMethod(), (string) $request->getUri()])) {
        $request = $this->dispatchRouterAndPrepareRoute($request, $router);
        $routeInfo = $request->getAttribute('routeInfo');
    }
Run Code Online (Sandbox Code Playgroud)

这表明,当前的路线被存储为属性routeInfoRequest.但似乎我的自定义中间件类在设置属性之前被调用(通过该$this->dispatchRouterAndPrepareRoute($request, $router);方法).因为呼叫$request->getAttribute('routeInfo')解决了NULL.

所以我的问题是; 如何从中间件函数/类中获取当前路由(或路由名称)?

或者我应该只复制上面的代码Slim\App

php slim slim-3

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

App Engine会忽略指向目录的符号链接

我正在创建一个使用自定义Flex环境在Google App Engine上运行的应用程序。此应用程序使用几个(相对)符号链接,这些符号链接指向项目中的其他目录。但是在部署应用程序时,这些符号链接会以某种方式被忽略。

gcloud在构建和部署应用程序之前,该工具似乎将源上下文(即我项目中的所有文件)发送给了Google容器构建器:

$ gcloud --project=my-project --verbosity=info app deploy
(...)
Beginning deployment of service [default]...
Building and pushing image for service [default]
INFO: Uploading [/tmp/tmpZ4Jha_/src.tgz] to [eu.gcr.io/my-project/appengine/default.20171212t160803:latest]
Started cloud build [some-uid].
Run Code Online (Sandbox Code Playgroud)

如果提取.tgz文件的内容,则可以看到项目中的所有文件和目录都在那里。除指向目录的符号链接外(但包括指向文件的符号链接)。因此,源上下文缺少到目录的所有符号链接。

不使用符号链接不是一种选择,那么有人知道如何在源上下文中将符号链接包括到发送给google的目录吗?

尽管我认为这无关紧要,但这是其中的内容app.yaml

env: flex
runtime: custom

runtime_config:
  document_root: docroot

manual_scaling:
  instances: 1

resources:
  cpu: 2
  memory_gb: 2
  disk_size_gb: 10
Run Code Online (Sandbox Code Playgroud)

linux google-app-engine

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

带有docker-compose的Traefik创造了太多的前端

我想使用Traefik的多个docker-compose项目作为反向代理.按照文档后我创建了两个docker-compose文件; 一个用于Traefik,另一个用于具有2个"whoami"容器的示例项目.

这适用于后端,但似乎Traefik为每个运行容器创建了一个前端.因此,除了2个whoami容器的1个前端之外,我还定义了两个前端:"frontend-Host-whoami-localhost-0"和"frontend-Host-whoami-localhost-1".

如果我扩展whoami服务(通过在docker-compose.yaml文件中复制它们的定义,或者使用docker-compose scale whoami=10),Traefik将创建更多的前端.

我只想要一个"Host:whoami.localhost"规则的前端,该规则指向一个后端,其中连接了多个正在运行的容器.我怎样才能做到这一点?

traefik.toml:

defaultEntryPoints = ["http"]

[web]
address = ":8080"

[entryPoints]
    [entryPoints.http]
    address = ":80"

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "localhost"
Run Code Online (Sandbox Code Playgroud)

docker-compose.yaml(对于traefik):

version: "2"
services:
  traefik:
    container_name: traefik
    image: traefik
    networks:
      - webgateway
    ports:
      - "80:80"
      - "8080:8080"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./traefik.toml:/traefik.toml
    labels:
      traefik.backend: web
      traefik.frontend.rule: Host:monitor.localhost

networks:
  webgateway:
    driver: bridge
Run Code Online (Sandbox Code Playgroud)

WHOAMI /泊坞窗,compose.yaml:

version: "2"
services:
  whoami:
    image: emilevauge/whoami
    networks:
      - webgateway
    labels:
      traefik.backend: whoami
      traefik.frontend.rule: Host:whoami.localhost

  whoami_2:
    image: emilevauge/whoami
    networks: …
Run Code Online (Sandbox Code Playgroud)

traefik

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

具有多阶段 dockerfile 的多个 gitlab-ci 阶段

我有一个包含两个阶段的 Dockerfile;第一阶段从源代码构建反应应用程序,第二阶段复制构建并添加 NGINX 服务器:

FROM kkarczmarczyk/node-yarn as builder
COPY . /workspace
RUN set -ex \
    yarn global add create-react-app \
    && yarn install \
    && GENERATE_SOURCEMAP=false yarn build

FROM nginx:mainline-alpine
COPY ./nginx-default.conf /etc/nginx/conf.d/default.conf
COPY --from=builder /workspace/build /var/www/html/
Run Code Online (Sandbox Code Playgroud)

我也在使用 gitlab-ci,我希望有多个阶段:构建、测试和部署。但我不知道如何拆分构建和测试阶段,因为我使用的是多阶段 Dockerfile。问题是所有 JS 测试(针对 React)都需要在“纱线构建”执行之前运行,并且构建被复制到秒级 docker 阶段。

一个解决方案可能是yarn testyarn build运行之前执行。但我真的很想有一个单独的测试 gitlab-ci 阶段。

这可能吗?或者我是否需要将我的 Dockerfile 阶段拆分为多个 Dockerfile?

testing docker reactjs gitlab-ci

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

在纱线工作区的子包中找不到笑话

我正在尝试将 Typescript 项目重构为具有多个包(带有纱线工作区)的 monorepo。在其中一个包 ( packages/compiler) 中,我安装了 jest,并进行了几次测试。他们以前工作过,但重构后我收到以下错误消息:

找不到名称“它”。您是否需要安装类型定义?

测试跑者?尝试npm i @types/jestnpm i @types/mocha

我似乎无法弄清楚如何让开玩笑起作用。

我开玩笑地在所有测试的包中安装了“本地”。但是如果我node_modules/在 a 之后检查yarn install,我只能看到一个.bin目录packages/compiler/node_modules,并且我可以看到 (ts-)jest 安装在“root”中node_modules。我认为我需要确保 jest 安装在我的包 ( packages/compiler/node_modules)的 node_modules 中,而不是安装在根目录中。但我似乎无法弄清楚如何做到这一点(nohoist根 package.json 中的选项不起作用)。

所以我的问题是如何让 jest 在我的子包中工作?

package.json

{
  "name": "pannenkoekjs",
  "private": true,
  "workspaces": [
    "packages/*"
  ],
  "devDependencies": {
    "lerna": "^3.18.4"
  }
}
Run Code Online (Sandbox Code Playgroud)

package.jsonpackages/compiler

{
  "name": "@pannenkoekjs/compiler",
  "dependencies": {
    "typescript": "^3.6.2"
  }, …
Run Code Online (Sandbox Code Playgroud)

typescript jestjs yarnpkg yarn-workspaces

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

从联合类型创建类似记录的类型

在 Typescript 中,我创建了一个具有共享“type”属性的联合类型:

export type Instruction =
  | { type: 'local.set', name: string, value: Expression }
  | { type: 'i32.const', value: number }
  | { type: 'i32.add', left: Expression, right: Expression };
Run Code Online (Sandbox Code Playgroud)

我想创建一个对象,其中“type”属性的值作为键,函数作为值。就像这样:

const visitor: Record<Instruction['type'], (instruction: Instruction) => void> = {
   'local.set': (instruction) => {},
   'i32.const': (instruction) => {},
   'i32.add': (instruction) => {},
}
Run Code Online (Sandbox Code Playgroud)

但“指令”参数的输入对我来说太通用了。我想知道我可以通过函数内的指令访问哪些属性。那么如何创建一个Record类似的类型,其中包含类型中“type”属性的所有键Instruction,以及它们各自的Instruction类型作为值?

换句话说; 如果我这样做,Typescript 可以推断出类型:

const instruction: Instruction = { type: 'local.set' }; // TS knows about the missing 'name' …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-typings

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