我正在测试一些React-Native组件。对于上下文,我的组件以以下方式存储:
project
-components
--componentA
---ComponentA.js
---__test__
----ComponentA.test.js
--componentB
---ComponentB.js
---__test__
----ComponentB.test.js
--componentC
---ComponentC.js
---__test__
----ComponentC.test.js
组件有import语句,如下所示:
import React from 'react';
import { Text, TouchableOpacity, View, StyleSheet} from 'react-native';
组件A和组件B成功渲染并通过各自的测试。由于SyntaxError错误:不能在模块外使用import语句,组件C无法启动其测试套件。组件C的导入如下:
import React from 'react';
import Constants from 'expo-constants';
import { View, Text, StyleSheet, TouchableOpacity, Image, ScrollView } from 'react-native';
import { COLORS } from '../../styles/COLORS';
import BackButton from '../widgets/BackButton';
import backImage from '../../../assets/navigation/leftArrow.png';
import { SECTIONS } from './consts';
import setStatusBarColor from '../utils/StatusBarColorFunctions';
错误指向导入常量的第2行。我注释掉了这一行并再次运行测试,然后指出View、Text等的import语句,特别是在TouchableOpacity中。我读了其他一些帖子,添加了"type"; "模块"到包裹上。json文件可以解决这个问题,但是我对另外两个正在进行类似测试的组件没有问题。如果我将文件更改为需要语句而不是导入语句,则可以解决问题,但导入语句用于其他文件,并且我的测试成功运行。当它们位于相同的目录中时,与其他文件相比,这个文件是否有特别的问题?
我也相当新的这个网站,所以如果需要从我的其他信息,请让我知道。提前感谢!
更新:我在其他文件中也遇到过这种情况。如果有人有建议,请告诉我!
你所需要的是一个属性在你的package.json
{
"name": "project",
"version": "1.0.0",
....
"type": "module",
....
}
将type module属性添加到包中,或者如果您使用Babel,请确保读取的第一行代码是
request("@babel/register");