首页 > 解决方案 > 如果是 Web,则从一个库导出,如果是 React Native 中的本地库,则从另一个库导出

问题描述

所以我正在尝试使用胜利图表(https://formidable.com/open-source/victory)并且不希望只使用网络视图,因为它们有一个本机实现。

但是,我正在尝试将库与 React Native Web 一起使用,但它根本不起作用,我收到以下错误:

/Users/myname/Desktop/Projects/myproject/Frontend/Expo/node_modules/victory-native/lib/components/victory-axis.js 10:22
Module parse failed: Unexpected token (10:22)
You may need an appropriate loader to handle this file type.
| 
| export default class extends VictoryAxis {
>   static defaultProps = Object.assign({}, VictoryAxis.defaultProps, {
|     axisComponent: <LineSegment/>,
|     axisLabelComponent: <VictoryLabel/>,

我的猜测是我需要使用两个“包装”文件,Victory.js 和 Victory.web.js 进行导入。

到目前为止,这是我的 Victory.web.js 文件:

Victory = require('victory');

export default Victory;

这不起作用。

我也试过:

import { VictoryPie } from 'victory';

export VictoryPie;

这给了我错误:

/Users/myname/Desktop/Projects/myproject/Frontend/Expo/src/components/utility/Victory.web.js
SyntaxError: /Users/myname/Desktop/Projects/myproject/Frontend/Expo/src/components/utility/Victory.web.js: Unexpected token (3:17)

  1 | import { VictoryPie } from 'victory';
  2 | 
> 3 | export VictoryPie;

我只想能够在 React Native 和 React Native Web 上使用这个库而不会引发错误。有什么办法吗?

标签: javascriptreactjsreact-native

解决方案


不确定这是否是最好的方法,但这种方法对我有用:

export const VictoryPie = require('victory').VictoryPie;

推荐阅读