将 React-Navigation 与 react-native-web 一起使用会抛出错误,因为它无法导入 web 相关模块

Using React-Navigation with react-native-web throws me error because it cannot import web related module

我正在使用带有反应导航的反应原生网络。我收到此错误:

Module not found: Can't resolve './PlatformHelpers' in '/home/vineet/projects/jm-agent-web/node_modules/react-navigation/lib'

我收到此错误是因为存在这些文件:PlatfomrHelpers.ios.js、PlatfomrHelpers.android.js、PlatfomrHelpers.web.js。但是没有PlatfomrHelpers.js.

所以我的 ES6 导入系统无法在 react-native-web 中导入 PlatfomrHelpers.web.js 导入名称“PlatfomrHelpers”。

如何解决?

我想分享我实施的解决方案,它非常简单。

这个问题可以通过告诉 webpack 优先导入 .web.js 文件来解决。

我进入了我的 webpack.config.js 文件。在顶层 'resolve' 属性 中,我可以添加 '.web.js' 作为 'extensions' 数组中的一个元素。下面的代码解决了它:

extensions: ['.web.js', '.js', '.json', '.jsx']

现在我的 webpack 正在为语句获取 'PlatfomrHelpers.web.js':

import 'PlatformHelpers'

问题是 react-navigation 区分本机和网络的 PlatformHelpers.native.jsPlatformHelpers.web.js。对于本机反应,您通常有 .ios.js.android.js 文件来区分您的平台,但反应导航也针对网络。最简单的解决方案是教你的流配置也处理 .native.js 文件用于原生和 .web.js 用于反应原生网络。

因此将此添加到 .flowconfig[options] 部分:

module.file_ext=.web.js

或者对于标准的 React Native:

module.file_ext=.native.js