TypeError: null is not an object (evaluating 'NativeClipboard_1.default.getString')
TypeError: null is not an object (evaluating 'NativeClipboard_1.default.getString')
我想在我的 expo
项目中使用 @twotalltotems/react-native-otp-input
。我已经完成了 @twotalltotems/react-native-otp-input
的文档,但是我收到了这个错误。我试过 https://github.com/tttstudios/react-native-otp-input/issues/87
的解决方案
但是 none 对我有用!
试试这个
1: 安装 yarn add @twotalltotems/react-native-otp-input@1.3.7
2: 安装 yarn add @react-native-community/clipboard
3: 运行 expo start -c
清除缓存
根据文档,您必须安装 @react-native-community/clipboard 作为依赖项,它可以解决您的问题
npm install --save @react-native-community/clipboard
对于将此包 @twotalltotems/react-native-otp-input
与 expo
一起使用的人,请记住 expo 与剪贴板包不兼容,但它本身提供了另一个包 expo-clipboard
。所以你有两种方法 -
- 要么使用
@twotalltotems/react-native-otp-input
版本 1.3.7(它使用 react-native
中的 clipboard
,但会发出剪贴板已弃用的警告。)
- 或者您可以通过将此包代码(来自 GitHub 或 node-modules)复制到您的代码库中来破解。创建您自己的组件并安装
expo install expo-clipboard
并将默认剪贴板导入替换为 index.js 文件中的 import Clipboard from 'expo-clipboard';
。注意 - 不要在 node-modules 中进行此更改,因为任何软件包更新都会使您的 hack 无效。
您需要通过以下步骤覆盖此组件:
克隆此文件@twotalltotems/react-native-otp-input/dist/index.js
替换这些行:
import Clipboard from '@react-native-community/clipboard';
import styles from './styles';
import { isAutoFillSupported } from './helpers/device';
import { codeToArray } from './helpers/codeToArray';
到
import * as Clipboard from 'expo-clipboard';
import styles from '@twotalltotems/react-native-otp-input/dist/styles';
import { isAutoFillSupported } from '@twotalltotems/react-native-otp-input/dist/helpers/device';
import { codeToArray } from '@twotalltotems/react-native-otp-input/dist/helpers/codeToArray';
并改变
Clipboard.getString() to Clipboard.getStringAsync()
那就用自己的组件代替吧。它应该按预期工作
如果您使用的是打字稿,请在顶部添加此 // @ts-nocheck
。
我想在我的 expo
项目中使用 @twotalltotems/react-native-otp-input
。我已经完成了 @twotalltotems/react-native-otp-input
的文档,但是我收到了这个错误。我试过 https://github.com/tttstudios/react-native-otp-input/issues/87
但是 none 对我有用!
试试这个
1: 安装 yarn add @twotalltotems/react-native-otp-input@1.3.7
2: 安装 yarn add @react-native-community/clipboard
3: 运行 expo start -c
清除缓存
根据文档,您必须安装 @react-native-community/clipboard 作为依赖项,它可以解决您的问题 npm install --save @react-native-community/clipboard
对于将此包 @twotalltotems/react-native-otp-input
与 expo
一起使用的人,请记住 expo 与剪贴板包不兼容,但它本身提供了另一个包 expo-clipboard
。所以你有两种方法 -
- 要么使用
@twotalltotems/react-native-otp-input
版本 1.3.7(它使用react-native
中的clipboard
,但会发出剪贴板已弃用的警告。) - 或者您可以通过将此包代码(来自 GitHub 或 node-modules)复制到您的代码库中来破解。创建您自己的组件并安装
expo install expo-clipboard
并将默认剪贴板导入替换为 index.js 文件中的import Clipboard from 'expo-clipboard';
。注意 - 不要在 node-modules 中进行此更改,因为任何软件包更新都会使您的 hack 无效。
您需要通过以下步骤覆盖此组件:
克隆此文件@twotalltotems/react-native-otp-input/dist/index.js
替换这些行:
import Clipboard from '@react-native-community/clipboard';
import styles from './styles';
import { isAutoFillSupported } from './helpers/device';
import { codeToArray } from './helpers/codeToArray';
到
import * as Clipboard from 'expo-clipboard';
import styles from '@twotalltotems/react-native-otp-input/dist/styles';
import { isAutoFillSupported } from '@twotalltotems/react-native-otp-input/dist/helpers/device';
import { codeToArray } from '@twotalltotems/react-native-otp-input/dist/helpers/codeToArray';
并改变
Clipboard.getString() to Clipboard.getStringAsync()
那就用自己的组件代替吧。它应该按预期工作
如果您使用的是打字稿,请在顶部添加此 // @ts-nocheck
。