wonday / react-native-pdf

A <Pdf /> component for react-native
MIT License
1.58k stars 540 forks source link

TypeError: Cannot read properties of null (reading 'getConstants') #716

Open albert17 opened 1 year ago

albert17 commented 1 year ago

What react-native version are you using? 0.69.3

What react-native-pdf version are you using? 6.6.2

What platform does your issue occur on? (android/ios/both) Both

Describe your issue as precisely as possible : 1) Steps to reproduce the issue or to explain in which case you get the issue Run a test that imports PDF. Application runs fine, only npm run test fails. 2) Interesting logs

 FAIL  __tests__/App-test.tsx
  ● Test suite failed to run

    TypeError: Cannot read properties of null (reading 'getConstants')

      4 | import { styles } from '../styles/common';
      5 | import { RootStackParamList } from '../types';
    > 6 | import Pdf from 'react-native-pdf';
        | ^
      7 |
      8 | export default function PdfSite ({ route }: NativeStackScreenProps<RootStackParamList, 'PdfSite'>) {
      9 |   return (

      at Object.getConstants (node_modules/react-native-blob-util/fs.js:14:39)
      at Object.<anonymous> (node_modules/react-native-blob-util/index.js:9:1)
      at Object.<anonymous> (node_modules/react-native-pdf/index.js:21:1)
      at Object.<anonymous> (src/screens/PdfSite.tsx:6:1)
      at Object.<anonymous> (src/App.tsx:11:1)
      at Object.<anonymous> (__tests__/App-test.tsx:6:1)

Show us the code you are using?

it('renders correctly', () => {
    act(() => {
        comp = create(<App />);
    });
ngvcanh commented 1 year ago

Same issue.

I'm using react-native:0.66.5

image

BraveEvidence commented 1 year ago

This could help https://www.youtube.com/watch?v=Afrd4z1aMNM https://www.youtube.com/watch?v=AHo--82qk2o

kalinchuk commented 1 year ago

@albert17 Did you find a solution for this issue?

rajeevverma076 commented 1 year ago

Any solution

import Pdf from 'react-native-pdf'; TypeError: Cannot read properties of null (reading 'getConstants')

@testing-library/react-native

kullarkert commented 1 year ago

Using with expo 48(react-native 0.71.4) same problem.

With

react-native-pdf@6.4.0  
react-native-blob-util@0.13.18 

I get ERROR: TypeError: Cannot read property 'DocumentDir' of null, js engine: hermes

With

react-native-pdf@6.6.2
react-native-blob-util@0.13.18 

ERROR: TypeError: Cannot read property 'DocumentDir' of null, js engine: hermes

With

react-native-pdf@6.4.0  
react-native-blob-util@0.17.3

ERROR TypeError: Cannot read property 'getConstants' of null, js engine: hermes

Maybe problem is in react-native-blob-util and not in react-native-pdf?

Searched and found this ticket: https://github.com/RonRadtke/react-native-blob-util/issues/204

Original idea why it should work with expo: https://github.com/expo/examples/tree/master/with-pdf

albert17 commented 1 year ago

@kalinchuk Still facing same issue. I have tried mocking but no luck.

PhilippLeh21 commented 1 year ago

Any update on that? Facing the same issue.

alessandrom commented 1 year ago

Facing the same issue

mgithubmessier commented 1 year ago

Same

kullarkert commented 1 year ago

Some solution mentioned here, but have't tested.

https://github.com/RonRadtke/react-native-blob-util/issues/204#issuecomment-1579012034

mgithubmessier commented 1 year ago

@kullarkert

Some solution mentioned here, but have't tested.

RonRadtke/react-native-blob-util#204 (comment)

That's specifically for unit tests, while I'm observing this when running the app on an android simulator for realtime development.

nikhil-tayal commented 1 year ago

@mgithubmessier Did you add this line in android/app/build.gradle?

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }
rohantneuro commented 11 months ago

@mgithubmessier Did you add this line in android/app/build.gradle?

packagingOptions {
       pickFirst 'lib/x86/libc++_shared.so'
       pickFirst 'lib/x86_64/libjsc.so'
       pickFirst 'lib/arm64-v8a/libjsc.so'
       pickFirst 'lib/arm64-v8a/libc++_shared.so'
       pickFirst 'lib/x86_64/libc++_shared.so'
       pickFirst 'lib/armeabi-v7a/libc++_shared.so'
   }

try but not working

axjrl commented 10 months ago

Facing the same

stuhorsfield commented 10 months ago

For anyone running into this outside of tests in expo development builds, I ran into this today because I hadn't added the expo config plugins. Once I installed them and rebuilt the development build it all worked fine.

dev-jwel commented 8 months ago

react-native-blob-util depends on react native turbo module, which should be implemented with native code(android/ios). This error may occur even we use only react-native-blob-util like this issue. To resolve this, we may need to overwrite turbo module with jest mock. Simplest way to suppress the error is mocking react-native-pdf itself. This example for jest setup code may work.

jest.mock('react-native-pdf', () => { return () => <></>})
thehemaljoshi commented 6 months ago

react-native-blob-util depends on react native turbo module, which should be implemented with native code(android/ios). This error may occur even we use only react-native-blob-util like this issue. To resolve this, we may need to overwrite turbo module with jest mock. Simplest way to suppress the error is mocking react-native-pdf itself. This example for jest setup code may work.

jest.mock('react-native-pdf', () => { return () => <></>})

Thanks it works