小编iro*_*dsd的帖子

React Native 运行错误:无法克隆 XXX

我不知道如何更好地描述它。我正在做 react-native 项目,发生了一些事情,由于某种原因我不能再运行它了。我收到一些奇怪的消息,比如无法克隆某些功能。

error: src/requests/TimeoutRequest.ts: function (path) {
          return fn.call(state, path, state);
        } could not be cloned.
Run Code Online (Sandbox Code Playgroud)

或者:

error: src/sensors/GPS.ts: Program(path) {
      importAll = path.scope.generateUid("$$_IMPORT_ALL");
      importDefault = path.scope.gen...<omitted>... } could not be cloned.
Run Code Online (Sandbox Code Playgroud)

所有版本:

npm version: 7.10.0

"react": "^16.11.0",
"react-native": "^0.62.2",

dev:
"@babel/core": "^7.13.15",
"@babel/runtime": "^7.13.10",
"babel-jest": "^24.9.0",
"babel-plugin-root-import": "^6.6.0",
"metro-react-native-babel-preset": "^0.57.0",
"react-test-renderer": "16.9.0"
Run Code Online (Sandbox Code Playgroud)

如果我注释掉这个函数。我在另一个中出错,依此类推。中间发生了什么:我更新了 npm 版本。然后我在下载一些库时遇到了一些问题,我不得不rm -rf node_modules && npm install.

我试过的:

谷歌搜索,一般。找不到任何可行的解决方案。发现它可能是 babel 问题,但它可能完全错误,我不知道

npm start --reset-cache

删除缓存文件夹、守望者的东西等等

npm install --legacy-peer-deps

克隆项目并在另一个文件夹中执行所有操作

恢复或删除 package-lock.json 和 yarn.lock。安装或不安装它们 …

babeljs react-native metro-bundler

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

反应本机生成错误:包android.support.annotation不存在

我不得不完全重写这个问题。

我有一个React Native Android应用程序。当我使用构建apk文件时./gradlew assembleRelease -x bundleReleaseJsAndAssets,它运行良好,但此后它完全停止编译。甚至react-native run-android不再工作了。

我到目前为止发现的是:首先,错误是这样的

Task :app:processDebugResources FAILED
resource android:attr/fontVariationSettings not found.
resource android:attr/ttcIndex not found.
Run Code Online (Sandbox Code Playgroud)

如果我将这些行添加到中gradle.properties

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

错误发生变化。现在就是这个

Task :@JWWon_react-native-universal-pedometer:compileDebugJavaWithJavac FAILED

error: package android.support.annotation does not exist
import android.support.annotation.Nullable;
                                 ^
cannot find symbol
  private void sendPedometerUpdateEvent(@Nullable WritableMap params) {
                                         ^
  symbol:   class Nullable
  location: class BMDPedometerModule
Run Code Online (Sandbox Code Playgroud)

问题不在于库。如果我从项目中删除它,它将开始抱怨另一个项目。要使其编译,我必须删除7个库。一个例子:

Task :@react-native-community_netinfo:compileDebugJavaWithJavac FAILED
error: package android.support.v4.net does not exist
import android.support.v4.net.ConnectivityManagerCompat;
error: cannot find symbol
    promise.resolve(ConnectivityManagerCompat.isActiveNetworkMetered(getConnectivityManager()));
                    ^
  symbol:   variable …
Run Code Online (Sandbox Code Playgroud)

android react-native

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

使用 python 将图像复制到 MacOS 剪贴板

我想在 Mac OS 上将图像(PIL 图像)复制到剪贴板我尝试了多种不同的方法来做到这一点。大多数python剪贴板模块(如pyclip或clipboard)不支持图像。

我找到了一个在 Windows 上执行此操作的代码,但在 mac 上没有。我尝试使用 QT,通过 brew 安装它,由于某种原因 brew 安装了一个新的 python 3.7.2(我有 3.7.1)并搞砸了像 python 和 python3 这样的终端命令。我设法修复了它,但这非常令人沮丧。无论如何我都无法让它工作。

我见过一个带有 win32 剪贴板的方法,但它仅适用于 Windows。我尝试了各种不同的模块,但没有一个接受图像。我想不出解决方案,所以我在这里寻求帮助。

一点背景。我正在编写一个应用程序,它将保存剪贴板中的图像并将其保存到文件中。我对此没有问题,但我也想存储我保存的内容,然后能够将其拉回剪贴板。就像打开上次保存一样。

python clipboard image

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

通过CreateAppContainer传递道具

我正在尝试通过AppContainer传递道具。我可以通过其他组件传递信息,但是我不知道如何通过createAppContainer发送道具

在App.js中:

render() {
    return (
        this.state.isLoggedIn ? <DrawerNavigator /> : 
<SignedOutNavigator handler={this.saveUserSettings} />
    )
}
Run Code Online (Sandbox Code Playgroud)

在SignedOutNavigator中:

import React from "react";
import { View, Text } from "react-native";
import { createStackNavigator, createAppContainer } from "react-navigation";
import LoginScreen from "../screens/LoginScreen";

const SignedOutNavigator = createStackNavigator({
    Login: {
        // screen: LoginScreen
        screen: props => <LoginScreen screenProps={value => {
            // I need to access props from here
            // like this.props.handler(value)
        }} />,
        navigationOptions: ({ navigation }) => ({
            header: null,
        }),
    }
});

export …
Run Code Online (Sandbox Code Playgroud)

react-native react-native-navigation

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

React Native 后台计时器永不停止

我正在构建一个应用程序,它有一个计时器来在计时器处于活动状态时请求地理定位。对于计时器,我使用的是react-native-background-timer。这是一种工作,但不完全是我想要的。

用这段代码:

BackgroundTimer.runBackgroundTimer(() => { 
    console.log('tic');
},  
1000);
Run Code Online (Sandbox Code Playgroud)

当应用程序在后台时,计时器正在停止。而这段代码:

const intervalId = BackgroundTimer.setInterval(() => {
    console.log('tic');
}, 1000);
Run Code Online (Sandbox Code Playgroud)

它甚至在后台不断运行,但我无法阻止它。当我运行时BackgroundTimer.clearInterval(intervalId);,计时器仍在运行。即使当我离开屏幕并返回主屏幕时,计时器仍然滴答作响,永不停止。这并不理想,因为我需要计时器运行几分钟然后停止。

我将计时器设置为 1 秒以更新屏幕上剩余的时间。我正在考虑将计时器设置为 6 分钟一次,但是如何每秒更新状态?为这个制作 2 个计时器感觉是一种不好的做法,即使它会起作用。

因此,为了更清楚,用户假设从事某些活动,例如步行几分钟。因此,当用户接听电话或打开音乐应用程序切换音乐或其他内容时,我不能让计时器停止。计时器仍然需要运行,我需要通过地理位置测量步数和距离。即使用户打开另一个应用程序,忘记我的应用程序,它也需要完美地工作,并且它仍然会运行剩余的时间,然后在数据库中记录并停止。

javascript timer react-native

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

CSS 中文件名的智能截断

我正在尝试对表示文件名的文本进行自定义截断,该文件名始终显示文件扩展名,但如果空间不足,则隐藏部分名称。例如,文件名是testtesttest.xml. 如果没有足够的空间,我希望它显示类似的内容tes...xml

我一直在玩text-overflow: ellipsis,但没有得到任何结果。它要么截断整行,要么根本不截断。

export default function FilenameTruncate(props) {
    const [name, extension] = props.filename.split('.')
    return (
        <div className="filename-container">
            <div className="filename-text">
                <span>{name}</span>
            </div>
            <div className="filename-ext">
                <span>.{extension}</span>
            </div>
        </div>
    )
}
Run Code Online (Sandbox Code Playgroud)
.filename-container {
    display: flex;
    flex-direction: row;
    overflow: hidden;
}

.filename-text {
    white-space: nowrap;
    text-overflow: ellipsis;
}

.filename-ext {
    white-space: nowrap;
}

Run Code Online (Sandbox Code Playgroud)

css overflow

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

并行http请求

我有一个应用程序使用backgroundWorker向last.fm网站发出API请求.最初我不知道我需要做多少请求.响应包含总页数,所以我只会在第一次请求后得到它.这是下面的代码.

    private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
    {            
        int page = 1;
        int totalpages = 1;

        while (page <= totalpages)
        {
            if (backgroundWorker.CancellationPending)
            {
                e.Cancel = true;
                return;
            }

            //Here is the request part
            string Response = RecentTracksRequest(username, from, page);

            if (Response.Contains("lfm status=\"ok"))
            {
                totalpages = Convert.ToInt32(Regex.Match(Response, @"totalPages=.(\d+)").Groups[1].Value);

                MatchCollection match = Regex.Matches(Response, "<track>((.|\n)*?)</track>");
                foreach (Match m in match)
                    ParseTrack(m.Groups[1].Value);
            }
            else
            {
                MessageBox.Show("Error sending the request.", "Error",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            if (page >= totalpages)
                break;

            if (totalpages == 0) …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing httpwebrequest

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