如何在React Native中使用别名安装的npm包

qlzsbp2j  于 2023-11-21  发布在  React
关注(0)|答案(2)|浏览(158)

我有一个React Native应用程序,我需要实现external keyboard navigation support。我正在尝试安装第三方软件包react-native-a11y来帮助解决这个问题。但是,我已经有一个名为react-native-a11y的本地软件包,重命名/重新配置需要大量的工作,所以我尝试导入别名为react-native-a11y-helper的新软件包。
我在package.json中有如下内容:

"react-native-a11y-alias": "npm:[email protected]",

字符串
在pnpm安装后,包会显示在node_modules中,并使用所需的别名作为包名。然后在我的代码中,我从包中导入了一个组件,在构建时没有任何问题:

import { KeyboardFocusView } from 'react-native-a11y-alias';


但是当我在Android device上运行应用程序时,metro插件会抛出以下错误:

error: Error: Unable to resolve module react-native-a11y-helper from <file>.tsx: react-native-a11y-helper could not be found within the project or in these directories:
  node_modules
  ../node_modules


我也试过用require导入,但没有成功。
如何在RN中正确使用此软件包?

igsr9ssn

igsr9ssn1#

正如react-native-a11y的文档:
这个库还没有完成,目前处于测试阶段。
所以你需要仔细遵循安装公会:

  1. npm i react-native-a11y
  2. cd ios && pod install
    1.添加到MainActivity.java
//android/app/src/main/java/com/project-name/MainActivity.java

  ...
  import android.content.Intent;
  import android.content.res.Configuration;
  ...
  
  @Override
  public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Intent intent = new Intent("onConfigurationChanged");
    intent.putExtra("newConfig", newConfig);
    this.sendBroadcast(intent);
  }

字符串

  1. iOS仅链接键盘(游戏)二进制与库:
  • 打开xcode
  • 在项目栏中选择文件夹
  • 选择目标项目
  • 选择构建阶段
  • 展开链接二进制与库
  • 按加号图标
  • 您可以搜索游戏
  • 选择GameController.framework、GameKit.framework、GameplayKit.framework

1.将提供程序添加到应用的根目录:

watch: examples/A11ySample/App.tsx

export const App = () => {
  return (
    <A11yProvider>
        // content here
    </A11yProvider>
  );
};

jw5wzhpr

jw5wzhpr2#

在一个项目中不应该有几个相同的软件包。建议,删除已经安装的软件包并重新安装(最新版本),并为所有需要的情况进行配置。只保留一个软件包并使用它有什么困难?
这个包在GitHub上,带有必要的说明,https://github.com/ArturKalach/react-native-a11y

相关问题