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”的主要内容,如果未能解决你的问题,请参考以下文章

TypeError:无法读取未定义的属性“findAll”(expressjs)

TypeError:无法读取未定义的属性(读取“问题”)

TypeError:无法读取未定义的属性“babel”

TypeError:无法读取未定义的属性(读取“匹配”):

TypeError:无法读取未定义的属性“存在”

TypeError:无法在 gitlab 中读取未定义的属性(读取“读取”)