最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - After upgrading to Expo48 Meeting this error: TypeError: Cannot read properties of undefined (reading 'exis

programmeradmin0浏览0评论

After upgrading my project from Expo45 to Expo48, I encounter this error when running the test:

TypeError: Cannot read properties of undefined (reading 'exists')
at exists (node_modules/expo-asset/src/PlatformUtils.ts:65:17)  
at asyncGeneratorStep (node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)  
at _next (node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:9)

The unit test itself is quite simple:

  it('Should be able rendered properly', () => {
    render(
      <UserContext.Provider
        value={[initialState, jest.fn()]}
      >
        <UpdatePasswordScreen />
      </UserContext.Provider>,
    );
  });

The UpdatePasswordScreen ponent is like this:

    <View style={styles.container}>
      <Spinner
        visible={showSpinner}
        textContent={'Loading...'}
        textStyle={{
          color: '#FFFFFF',
        }}
      />
      <CustomInput
        titleStyle={{
          size: 13,
        }}
        titleContainerStyle={{
          marginBottom: 10,
        }}
        containerStyle={{
          marginBottom: 8,
        }}
        placeholder="Enter Password"
        title="Old password"
        value={oldPassword}
        secureTextEntry={!showOldPassword}
        onRenderLeftIcon={() => (
          <Icon
            name={showOldPassword ? 'eye' : 'eye-off'}
            type="feather"
            size={20}
            color="#AFB4B9"
            onPress={() => setShowOldPassword(!showOldPassword)}
          />
        )}
        onChangeText={setOldPassword}
      />
      <View style={styles.confirmButton}>
        <IconButton
          text="Reset Password"
          buttonStyle={{
            height: 52,
            width: 200,
          }}
          onPress={updatePassword}
          disabled={!oldPassword || !newPassword
            || !confirmNewPassword || showPasswordErrorMessage()
            || newPassword !== confirmNewPassword
            || oldPasswordUnchanged
          }
        />
      </View>
    </View>

I just want to render the ponent but it doesn't work. The unit test run well under Expo45.

Any suggestions will be appreciated!

How to solve this problem?

After upgrading my project from Expo45 to Expo48, I encounter this error when running the test:

TypeError: Cannot read properties of undefined (reading 'exists')
at exists (node_modules/expo-asset/src/PlatformUtils.ts:65:17)  
at asyncGeneratorStep (node_modules/@babel/runtime/helpers/asyncToGenerator.js:3:24)  
at _next (node_modules/@babel/runtime/helpers/asyncToGenerator.js:22:9)

The unit test itself is quite simple:

  it('Should be able rendered properly', () => {
    render(
      <UserContext.Provider
        value={[initialState, jest.fn()]}
      >
        <UpdatePasswordScreen />
      </UserContext.Provider>,
    );
  });

The UpdatePasswordScreen ponent is like this:

    <View style={styles.container}>
      <Spinner
        visible={showSpinner}
        textContent={'Loading...'}
        textStyle={{
          color: '#FFFFFF',
        }}
      />
      <CustomInput
        titleStyle={{
          size: 13,
        }}
        titleContainerStyle={{
          marginBottom: 10,
        }}
        containerStyle={{
          marginBottom: 8,
        }}
        placeholder="Enter Password"
        title="Old password"
        value={oldPassword}
        secureTextEntry={!showOldPassword}
        onRenderLeftIcon={() => (
          <Icon
            name={showOldPassword ? 'eye' : 'eye-off'}
            type="feather"
            size={20}
            color="#AFB4B9"
            onPress={() => setShowOldPassword(!showOldPassword)}
          />
        )}
        onChangeText={setOldPassword}
      />
      <View style={styles.confirmButton}>
        <IconButton
          text="Reset Password"
          buttonStyle={{
            height: 52,
            width: 200,
          }}
          onPress={updatePassword}
          disabled={!oldPassword || !newPassword
            || !confirmNewPassword || showPasswordErrorMessage()
            || newPassword !== confirmNewPassword
            || oldPasswordUnchanged
          }
        />
      </View>
    </View>

I just want to render the ponent but it doesn't work. The unit test run well under Expo45.

Any suggestions will be appreciated!

How to solve this problem?

Share Improve this question edited Apr 4, 2023 at 23:33 Zachary Zhao asked Apr 4, 2023 at 23:11 Zachary ZhaoZachary Zhao 413 bronze badges
Add a ment  | 

1 Answer 1

Reset to default 13

I fixed this error by adding these lines to my jest setup file :

jest.mock("expo-font");
jest.mock("expo-asset");

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论