将 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.js
和 PlatformHelpers.web.js
。对于本机反应,您通常有 .ios.js
和 .android.js
文件来区分您的平台,但反应导航也针对网络。最简单的解决方案是教你的流配置也处理 .native.js
文件用于原生和 .web.js
用于反应原生网络。
因此将此添加到 .flowconfig
的 [options]
部分:
module.file_ext=.web.js
或者对于标准的 React Native:
module.file_ext=.native.js
我正在使用带有反应导航的反应原生网络。我收到此错误:
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.js
和 PlatformHelpers.web.js
。对于本机反应,您通常有 .ios.js
和 .android.js
文件来区分您的平台,但反应导航也针对网络。最简单的解决方案是教你的流配置也处理 .native.js
文件用于原生和 .web.js
用于反应原生网络。
因此将此添加到 .flowconfig
的 [options]
部分:
module.file_ext=.web.js
或者对于标准的 React Native:
module.file_ext=.native.js