小编Gio*_*gio的帖子

类型错误:cb.apply 不是函数

我正在尝试运行一个使用 Metro Bundler 的现有 React Native 项目。我的操作系统是 Ubuntu 20.04,我尝试在物理 Android 设备和我使用 Android Studio 创建的 Android 模拟器上运行该应用程序。

我已经成功克隆了项目的 repo,安装了它的依赖项 ( yarn),构建了应用程序 ( react-native run-android),并在我的手机和模拟器上打开了应用程序。但是,运行react-native start错误说TypeError: cb.apply is not a function. 这是我在运行时得到的完整信息和错误react-native start

$ react-native start
warn Your project is using deprecated "rnpm" config that will stop working from next release. Please use a "react-native.config.js" file to configure the React Native CLI. Migration guide: https://github.com/react-native-community/cli/blob/master/docs/configuration.md
warn The following packages use deprecated "rnpm" config that …
Run Code Online (Sandbox Code Playgroud)

android react-native metro-bundler

35
推荐指数
5
解决办法
4万
查看次数

测试 React 应用程序时如何模拟 fetch?

我想测试一个使用全局fetch方法的小型 React Web 应用程序。

fetch我尝试以这种方式嘲笑:

global.fetch = jest.spyOn(global, 'fetch').mockImplementation(endpoint =>
  Promise.resolve({
    json: () => Promise.resolve(mockResponse)
  })
);
Run Code Online (Sandbox Code Playgroud)

...但是模拟似乎被忽略,而内置fetch似乎被使用:Error: connect ECONNREFUSED 127.0.0.1:80 ...看起来像是对内置的失败调用fetch

然后我尝试使用jest.fn而不是jest.spyOn

global.fetch = jest.fn(endpoint =>
  Promise.resolve({
    json: () => Promise.resolve(mockResponse)
  })
);
Run Code Online (Sandbox Code Playgroud)

...并惊讶地发现了不同的错误。现在似乎已经考虑了模拟,但同时无法正常工作:

    TypeError: Cannot read property 'then' of undefined

       8 |     this.updateTypes = this.props.updateTypes;
       9 |     this.updateTimeline = this.props.updateTimeline;
    > 10 |     fetch('/timeline/tags')
         |     ^
      11 |       .then(res => res.json())
      12 |       .then(tags => …
Run Code Online (Sandbox Code Playgroud)

unit-testing fetch reactjs jestjs react-testing-library

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

Alpine Linux 容器上的 Flutter 安装无法“pub 升级”

我想在运行 Alpine Linux 的 Docker 容器上安装 Flutter。

我写了以下内容Dockerfile

FROM alpine

RUN apk add bash curl file git zip
RUN git clone https://github.com/flutter/flutter.git
ENV PATH="$PATH:/flutter/bin"
RUN flutter channel stable
Run Code Online (Sandbox Code Playgroud)

一切都很顺利,直到最后一步,我得到:

Step 5/5 : RUN flutter channel stable
 ---> Running in f8e764b1e091
Downloading Dart SDK from Flutter engine 82b4ae86d69b4bad10a42ad380f2a538d97ffb38...
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  174M  100  174M    0     0  23.1M      0  0:00:07  0:00:07 --:--:-- 23.8M
Building …
Run Code Online (Sandbox Code Playgroud)

linux docker alpine-linux flutter

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

'StateNotifierProvider' 类型声明有 2 个类型参数,但给出了 1 个类型参数

在 Flutter 2.0.5 应用程序的上下文中,我想使用 Riverpod 管理其状态,我想我可以这样声明StateNotifierProvider

import 'package:flutter_riverpod/flutter_riverpod.dart';


final counterProvider = StateNotifierProvider<CounterStateNotifier>((ref) => CounterStateNotifier());

class CounterStateNotifier extends StateNotifier<int> {
  CounterStateNotifier([int count = 0]) : super(count);

  void increment() => state++;
}
Run Code Online (Sandbox Code Playgroud)

但是 Android Studio(以及后来的 Dart 编译器)抱怨我声明counterProvider变量的行:

类型 'StateNotifierProvider' 用 2 个类型参数声明,但给出了 1 个类型参数。

删除中的<CounterStateNotifier>类型参数StateNotifierProvider<CounterStateNotifier>会删除错误。然而,试图读取提供者和调用其increment方法(设置() => context.read(counterProvider).increment()onPressed一个ElevatedButton,然后按下按钮)给出以下运行时错误:

'increment'
method not found
Receiver: 0
Arguments: []
Run Code Online (Sandbox Code Playgroud)

为什么context.read(counterProvider)返回int状态而不是通知程序?我的问题的第一部分中提到的类型参数错误背后的原因是什么?


我应该提到我正在网络上运行我的应用程序(使用flutter run -d Chrome)。

dart flutter riverpod

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

特定术语前的负面正则表达式

我想解析一个LaTeX文档,并用一个特殊的命令标记它的一些术语.具体来说,我有一个术语列表,比如说:

Astah
UML
use case
...
Run Code Online (Sandbox Code Playgroud)

我想用这个自定义命令标记文本中第一次出现的Astah : \gloss{Astah}. 到目前为止,这是有效的(使用Python):

for g in glossary:
    pattern = re.compile(r'(\b' + g + r'\b)', re.I | re.M)
    text = pattern.sub(start + r'\1' + end, text, 1)
Run Code Online (Sandbox Code Playgroud)

它工作正常.

但后来我发现:

  • 不想匹配LaTeX内联注释后的术语(所以术语前面有一个或多个%)
  • 而且我不想匹配部分标题内的术语(即\section{term}\paragraph{term})

所以我尝试了这个:

for g in glossary:
    pattern = re.compile(r'(^[^%]*(?!section{))(\b' + g + r'\b)', re.I | re.M)
    text = pattern.sub(r'\1' + start + r'\2' + end, text, 1)
Run Code Online (Sandbox Code Playgroud)

但它匹配注释中的术语,前面是其他字符,它也匹配标题内的术语.

关于正则表达式的"贪婪",我不明白吗?或者问题可能在别的地方?

举个例子,如果我有这个文字:

\section{Astah}
Astah …
Run Code Online (Sandbox Code Playgroud)

python regex latex

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

即使设置了remotePatterns,Next.js 主机名也未在 next.config.js 中的图像下配置

Next.JS 13.3.1 似乎没有获取我next.config.js文件的以下部分:

images: {
    remotePatterns: [
      {
        protocol: "https",
        hostname: "s3-eu-central-1.amazonaws.com",
        port: "",
        pathname: "/mycompany-data-bucket-dev/**",
      },
    ],
  },

Run Code Online (Sandbox Code Playgroud)

我收到以下错误,令人惊讶的是,它提到了与我的配置中相同的协议和主机名:

Error: Invalid src prop (https://s3-eu-central-1.amazonaws.com/mycompany-data-bucket-dev/media/images/default-female/default-female-500-500.jpg) on `next/image`, hostname "s3-eu-central-1.amazonaws.com" is not configured under images in your `next.config.js`
See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host
Run Code Online (Sandbox Code Playgroud)

我重新启动了本地开发服务器并仔细检查了错误消息。我的应用程序在本地运行localhost:3000

我怎样才能进一步调查这个问题?例如,是否可以在引发错误之前在运行时打印我的 Next.JS 配置?

next.js

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

FocusScope.nextFocus() 意外跳过一个或多个 TextFormFields

我想要一系列TextFormFields,用户可以通过在软键盘上按“下一步”(或在模拟器上测试时按硬键盘上的 Tab)来导航。我期待以下 Flutter 应用程序能够正常工作:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'TextFormField Problem Demo',
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key}) : super(key: key);

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Test Homepage'),
      ),
      body: Column(children: <Widget>[
        TextFormField(
          onFieldSubmitted: (_) => FocusScope.of(context).nextFocus(),
          textInputAction: TextInputAction.next,
        ),
        TextFormField(
          onFieldSubmitted: …
Run Code Online (Sandbox Code Playgroud)

focus flutter

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

Travis CI部署:无效选项“ --secret_access_key =“

我正在使用Travis CI构建Java Web应用程序,并尝试将其部署到AWS Elastic Beanstalk实例。构建进展顺利:

The command "mvn test -B" exited with 0.
Run Code Online (Sandbox Code Playgroud)

...但是部署失败并显示:

Fetching: dpl-1.8.31.gem (100%)
Successfully installed dpl-1.8.31
1 gem installed

invalid option "--secret_access_key="
failed to deploy
Run Code Online (Sandbox Code Playgroud)

我的.travis.yml文件似乎有效,并且已使用travis CLI工具将我的AWS 加密秘密访问密钥存储在其中:

travis encrypt secret_access_key="< my secret access key >"
Run Code Online (Sandbox Code Playgroud)

那为什么不能部署到AWS?特拉维斯为什么告诉我invalid option "--secret_access_key="

我检查了Travis dpl文档中的Elastic Beanstalk,他们说密钥的选项应该是--secret-access-key=...,带破折号(而不是像我Travis日志中的下划线invalid option "--secret_access_key=")。

如何部署我的应用程序?

deployment amazon-web-services travis-ci amazon-elastic-beanstalk

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

Cytoscape:即使有教程,也会出现类型错误

我想使用Cytoscape.js,所以我复制粘贴了他们的教程

var cy = cytoscape({
    container: document.getElementById('cy')
});
Run Code Online (Sandbox Code Playgroud)

...我得到了这个(在 Firefox 控制台上):

TypeError: r is null
Run Code Online (Sandbox Code Playgroud)

和这个(在 Safari 控制台上):

TypeError: null is not an object (evaluating 'r.className')
Run Code Online (Sandbox Code Playgroud)

该错误在 Chrome 上仍然存在,始终指示 的第 39 行cytoscape.min.js

当然,我有一个 HTML<div id="cy"></div>元素。

为什么我会收到此错误?另外,我尝试添加一些节点,它们在 JSFiddle 上呈现,但不在浏览器上呈现......

javascript cytoscape.js

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

List.add 和手动添加项目到 Riverpod StateNotifier&lt;List&lt;String&gt;&gt; 之间的区别

我想学习如何使用Riverpod,因此为此我正在实现一个小应用程序,该应用程序显示项目列表和一个按钮,该按钮在点击时将虚拟项目添加到列表中。

问题背景

按下以下应用程序中的按钮将按预期工作(添加一个虚拟项目,并且更改会立即反映在 UI 中):

import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';



void main() => runApp(const ProviderScope(child: MyApp()));

class MyApp extends StatelessWidget {
  const MyApp({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context) => MaterialApp(home: HomePage());
}



final itemsProvider = StateNotifierProvider((ref) => ItemsList());

class ItemsList extends StateNotifier<List<String>> {
  ItemsList([List<String> items]) : super(items ?? []);

  void add(String item) => state = [...state, item];
}



class HomePage extends ConsumerWidget {
  const HomePage({Key key}) : super(key: key);

  @override
  Widget build(BuildContext context, ScopedReader watch) { …
Run Code Online (Sandbox Code Playgroud)

state dart flutter riverpod

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

OOP:使用递归类定义继承

我(递归地)定义了一个用于实现二叉树的类(在Java中):

class BinaryTree {
    protected int key;
    protected BinaryTree left, right;

    // some methods...
}
Run Code Online (Sandbox Code Playgroud)

我想从中实现二进制搜索树,如下所示:

class BinarySearchTree extends BinaryTree {
    // ...

    public BinarySearchTree search(int x) {
        if (x == key)
            return this;
        if (x < key)
            if (left != null)
                return left.search(x);  // (*)
        else
            if (right != null)
                return right.search(x); // (*)
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

但当然标记的行// (*)不会编译leftright只是BinaryTrees,没有任何search()方法.

所以我想知道如果那里有一种方法可以定义BinarySearchTreeBinaryTree超类 …

java oop recursion inheritance class

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

监督数据集上的 TF2 padded_batch

问题设置

我正在关注这个教程。本教程首先加载一个监督数据集(使用tfds.loadwith as_supervised=True):

(train_data, test_data), info = tfds.load(
    'imdb_reviews/subwords8k', 
    split = (tfds.Split.TRAIN, tfds.Split.TEST), 
    with_info=True, as_supervised=True)
Run Code Online (Sandbox Code Playgroud)

然后教程建议像这样洗牌和填充数据集:

电影评论的长度可以不同。我们将使用该padded_batch方法来标准化评论的长度。

train_batches = train_data.shuffle(1000).padded_batch(10)
test_batches = test_data.shuffle(1000).padded_batch(10)
Run Code Online (Sandbox Code Playgroud)

...但不幸的是,该padded_batch方法需要一个额外的参数,教程似乎忘记了:

Traceback (most recent call last):
  File "imdb_reviews.py", line 14, in <module>
    train_batches = train_data.shuffle(1000).padded_batch(10)
TypeError: padded_batch() missing 1 required positional argument: 'padded_shapes'
Run Code Online (Sandbox Code Playgroud)

重要假设

尽管错误堆栈表明这padded_shapes是缺少的参数,但从教程中我认为可以公平地推断出缺少的参数实际上是batch_size(应该在 之前padded_shapes)。

我尝试过的

我认为这可能很容易解决,如下所示:

Traceback (most recent call last):
  File "imdb_reviews.py", line 14, in <module>
    train_batches = train_data.shuffle(1000).padded_batch(10) …
Run Code Online (Sandbox Code Playgroud)

python tensorflow tensorflow-datasets tensorflow2.x

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