TypeError:无法读取未定义的属性“SHORT”
Posted
技术标签:
【中文标题】TypeError:无法读取未定义的属性“SHORT”【英文标题】:TypeError: Cannot read property 'SHORT' of undefined 【发布时间】:2019-01-27 12:26:21 【问题描述】:我正在使用 jest 和酶为反应原生应用程序编写单元测试。当我尝试运行测试用例时,出现以下错误:
● 测试套件无法运行
在对象。 (node_modules/react-native-simple-toast/index.js:7:23) 在对象。 (src/client/components/Catalogue/events.js:10:29) 在对象。 (测试/events-test.js:5:13) 在 Generator.next () 在新的承诺 () 在 Generator.next () 在
错误是由于从 react-native-simple-toast 导入 Toast 造成的。如果没有此导入,测试运行良好,但我需要在我的组件中使用 react-native-simple-toast,因此无法删除它。我不知何故需要在我的组件中使用 react-native-simple-toast 运行测试:
import React, Component from 'react'
import Platform, ActivityIndicator, Linking, Dimensions, View, Text,
TouchableOpacity, TextInput, StyleSheet, Keyboard, Image,
KeyboardAvoidingView from 'react-native'
import Container, Header, Card, CardItem, Content, Left, Right, Body,
Title, Icon, Button from 'native-base';
import Iconiosback from 'react-native-vector-icons/Ionicons';
import IconMenu from 'react-native-vector-icons/MaterialIcons';
import axios from 'axios';
import SERVER_URL from '../../config';
import Col, Row, Grid from 'react-native-easy-grid';
import Toast from 'react-native-simple-toast'; //this causes the error
请帮我解决这个问题。
【问题讨论】:
你看过 events.js 了吗? 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建 minimal reproducible example。使用edit 链接改进您的问题 - 不要通过 cmets 添加更多信息。请添加对应的源码?! 【参考方案1】:安装
npm install react-native-simple-toast --save
安装后。
react-native link
然后查看node_modules
文件夹内是否添加了这个模块
重启项目并再次运行
这里是Discussion
【讨论】:
我尝试实现这个,但我仍然面临同样的问题。【参考方案2】:解决这个问题的方法是模拟属性SHORT
。
创建一个测试设置文件,例如setup.js
并包含以下模拟
jest.mock('react-native-simple-toast', () => (
SHORT: jest.fn(),
));
确保将此文件添加到您的package.json
jest
配置下,即
"jest":
.....
"setupFiles": [
"/setup.js" // location of your setup.js file
]
【讨论】:
【参考方案3】:确保你在安装包后运行了cd ios && pod install
。
这可能是由于现有缓存而发生的。
在模拟器中关闭应用 再次运行npm run ios
【讨论】:
你是怎么解决的? 你好@samira 这通过清除缓存并重新安装 pod 包来解决。安装到我的应用程序的某些软件包已损坏。以上是关于TypeError:无法读取未定义的属性“SHORT”的主要内容,如果未能解决你的问题,请参考以下文章