react-native icon indicating copy to clipboard operation
react-native copied to clipboard

TypeError: Cannot read property 'getItem' of undefined

Open omerfaran opened this issue 5 years ago • 15 comments

Please provide all the information requested. Issues that do not follow this format are likely to stall.

Description

I'm creating a new react-native project and when running it I'm getting the above error. The full error is:

TypeError: Cannot read property 'getItem' of undefined

This error is located at:
    in FlatList (at YellowBoxList.js:87)
    in RCTView (at YellowBoxList.js:79)
    in YellowBoxList (at YellowBoxContainer.js:36)
    in YellowBoxContainer (at YellowBox.js:147)
    in YellowBox (at AppContainer.js:104)
    in RCTView (at AppContainer.js:135)
    in AppContainer (at renderApplication.js:39)

Also, in my cmd I'm getting this error, related to the debugger:

None of these files exist:
  * debugger-ui\debuggerWorker.cff11639.js(.native|.native.js|.js|.native.json|.json|.native.ts|.ts|.native.tsx|.tsx)
  * debugger-ui\debuggerWorker.cff11639.js\index(.native|.native.js|.js|.native.json|.json|.native.ts|.ts|.native.tsx|.tsx)
    at ModuleResolver.resolveDependency (C:\Presto\haveri\node_modules\metro\src\node-haste\DependencyGraph\ModuleResolution.js:163:15)
    at ResolutionRequest.resolveDependency (C:\Presto\haveri\node_modules\metro\src\node-haste\DependencyGraph\ResolutionRequest.js:52:18)
    at DependencyGraph.resolveDependency (C:\Presto\haveri\node_modules\metro\src\node-haste\DependencyGraph.js:287:16)
    at C:\Presto\haveri\node_modules\metro\src\lib\transformHelpers.js:267:42
    at Server.<anonymous> (C:\Presto\haveri\node_modules\metro\src\Server.js:841:41)
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (C:\Presto\haveri\node_modules\metro\src\Server.js:99:24)
    at _next (C:\Presto\haveri\node_modules\metro\src\Server.js:119:9)

I'm using windows 10. I understand that it might be related to my system because usually people init a new react-native app and it's wokring. But I cannot figure out what's the problem and why it responds like that. If you have a direction on what should I do I'd be glad to try anything, just a few days ago it worked fine and seems like it's out of the blue.

Thanks a lot in advance

React Native version:

0.62.2

Steps To Reproduce

react-native init newProject react-native run-android

Expected Results

Describe what you expected to happen.

Snack, code example, screenshot, or link to a repository:

Please provide a Snack (https://snack.expo.io/), a link to a repository on GitHub, or provide a minimal code example that reproduces the problem. You may provide a screenshot of the application if you think it is relevant to your bug report. Here are some tips for providing a minimal example: https://stackoverflow.com/help/mcve

omerfaran avatar Jun 07 '20 06:06 omerfaran

:warning: Missing Environment Information
:information_source: Your issue may be missing information about your development environment. You can obtain the missing information by running react-native info in a console.

github-actions[bot] avatar Jun 09 '20 14:06 github-actions[bot]

Quick search pulled up this. Check your dependencies?

chrisglein avatar Jun 09 '20 14:06 chrisglein

Had the same issue.

Just remove:

     "@babel/plugin-proposal-class-properties": "^7.10.4",
     "@babel/plugin-transform-flow-strip-types": "^7.10.4",

from devDependencies

and

     plugins: [
       ["@babel/plugin-proposal-class-properties"],
       ["@babel/plugin-transform-flow-strip-types",
         {
           "loose": true
         }
       ],
     ],

from babel.config.js

Now build new.

kwoxer avatar Jul 18 '20 06:07 kwoxer

@kwoxer I actually need the @babel/plugin-proposal-class-properties as I'm using the @babel/plugin-proposal-decorators. Is there another solution to this issue?

avinashlng1080 avatar Jan 04 '21 19:01 avinashlng1080

@avinashlng1080 : Please try with import FlatList from 'react-native-gesture-handler'.

any solution?

woowalker avatar Jul 27 '21 03:07 woowalker

This issue is still happening on react-native 0.64.2. I cannot remove the plugins from babel.config because it will break other things, like typerom migatrions.

Any other suggestions or news about this?

LuigiMaestrelli avatar Nov 23 '21 14:11 LuigiMaestrelli

I had the same issue on react-native 0.64.3. I solved this issue by remove Related libraries for babel from babel.config.

['@babel/plugin-proposal-private-methods', { loose: true }],
['@babel/plugin-proposal-private-property-in-object', { loose: true }],
['@babel/plugin-proposal-decorators', { legacy: true }],
['@babel/plugin-proposal-class-properties', { loose: true }],

itchii-06 avatar Jan 23 '22 08:01 itchii-06

Hello, gentlemen! I found a solution for the root cause. You don't need to remove or install babel plugins. Just do what is said in -- https://github.com/babel/babel/issues/8417#issuecomment-430007587

Add "class properties" plugin in the list (there are all in -- module:metro-react-native-babel-preset but in different order), if you didn't already.

"plugins": [
      "@babel/plugin-transform-flow-strip-types",
      "@babel/plugin-proposal-class-properties",
      ...
],

Dimous avatar Feb 06 '22 01:02 Dimous

getItem I also experienced the same case where the getItem function was not recognized. Previously I've changed the library from @react-native-community/async-storage to @react-native-async-storage/async-storage. But is that the reason?

Fandy16 avatar May 29 '22 23:05 Fandy16

Hello, gentlemen! I found a solution for the root cause. You don't need to remove or install babel plugins. Just do what is said in -- babel/babel#8417 (comment)

Add "class properties" plugin in the list (there are all in -- module:metro-react-native-babel-preset but in different order), if you didn't already.

"plugins": [
      "@babel/plugin-transform-flow-strip-types",
      "@babel/plugin-proposal-class-properties",
      ...
],

Adding @babel/plugin-transform-flow-strip-types to babel plugins solved the issue for us. Note that we already had @babel/plugin-proposal-class-properties in babel plugins.

diatche avatar Jun 06 '22 23:06 diatche

@diatche 's solution just saved me a bunch of frustration in an Expo 46 / RN 0.69.6 project. Thanks!

mcavaliere avatar Oct 29 '22 22:10 mcavaliere

to apply certain plugins / presets only on react-native or any other library, use the "overrides" and "include/exclude" babel configs:

// (\\{1,2}|\/) - it turns out that windows uses both \ and \\ as the path separators, and mac uses /
const reactNativePathRegex =
  /node_modules(\\{1,2}|\/)(@react-native|react-native)/;


// ...
    plugins: [
      '@babel/plugin-transform-modules-commonjs',
      // ... other plugins
    ],
    overrides: [
      // only apply to `node_modules/react-native` and `node_modules/@react-native`
      // I needed this because of https://github.com/facebook/jest/issues/8627#issuecomment-1376064713
      // but this might not apply in your case
      {
        include: [reactNativePathRegex],
        presets: [
          'module:metro-react-native-babel-preset',
        ],
      },
      {
        // apply to everything besides `node_modules/react-native` and `node_modules/@react-native`
        exclude: [reactNativePathRegex],
        plugins: [
          ['@babel/plugin-proposal-class-properties', {loose: true}],
          ['@babel/plugin-proposal-private-methods', {loose: true}],
          // other plugins that doesn't play nicely with react-native
        ],
// ...

vzaidman avatar Jan 10 '23 13:01 vzaidman

Hello, gentlemen! I found a solution for the root cause. You don't need to remove or install babel plugins. Just do what is said in -- babel/babel#8417 (comment) Add "class properties" plugin in the list (there are all in -- module:metro-react-native-babel-preset but in different order), if you didn't already.

"plugins": [
      "@babel/plugin-transform-flow-strip-types",
      "@babel/plugin-proposal-class-properties",
      ...
],

Adding @babel/plugin-transform-flow-strip-types to babel plugins solved the issue for us. Note that we already had @babel/plugin-proposal-class-properties in babel plugins.

thanks its working

ahmedyounes avatar Jan 12 '23 05:01 ahmedyounes

Hello, gentlemen! I found a solution for the root cause. You don't need to remove or install babel plugins. Just do what is said in -- babel/babel#8417 (comment) Add "class properties" plugin in the list (there are all in -- module:metro-react-native-babel-preset but in different order), if you didn't already.

"plugins": [
      "@babel/plugin-transform-flow-strip-types",
      "@babel/plugin-proposal-class-properties",
      ...
],

Adding @babel/plugin-transform-flow-strip-types to babel plugins solved the issue for us. Note that we already had @babel/plugin-proposal-class-properties in babel plugins.

thanks its working

Yea this works if you want to add 'module:metro-react-native-babel-preset', to the whole project.

But in some cases you don't want to add it in the root of the monorepo because you also transpile non react-native code in other packages of the monorepo. In that case, use overrides like I did in the comment above.

vzaidman avatar Jan 12 '23 10:01 vzaidman

This issue is waiting for author's feedback since 24 days. Please provide the requested feedback or this will be closed in 7 days.

github-actions[bot] avatar Mar 10 '23 00:03 github-actions[bot]

Also worked for me, using ethers 6.1 required private class properties and it broke flatlist. My current babel.config:

plugins = [
    ["@babel/plugin-transform-flow-strip-types", { loose: true }],
    ["@babel/plugin-proposal-class-properties", { loose: true }],
    ["@babel/plugin-proposal-private-methods", { loose: true }],
    ['module-resolver', {
      root: ['./'],
      alias: {
        /**
         * Regular expression is used to match all files inside `./src` directory and map each `.src/folder/[..]` to `~folder/[..]` path
         */
        '^~(.+)': './src/\\1',
        'crypto': 'react-native-quick-crypto',
        'stream': 'stream-browserify',
        'buffer': '@craftzdog/react-native-buffer',
        'assert': 'assert',
        // ethers lib calling net module
        'net': 'react-native-tcp-socket',
        'http': 'http-browserify',
        'https': 'https-browserify',
        'zlib': 'zlib-browserify',
      }
    }]]

devYonz avatar Mar 10 '23 09:03 devYonz

This issue is waiting for author's feedback since 24 days. Please provide the requested feedback or this will be closed in 7 days.

github-actions[bot] avatar Apr 03 '23 18:04 github-actions[bot]

This issue was closed because the author hasn't provided the requested feedback after 7 days.

github-actions[bot] avatar Apr 11 '23 00:04 github-actions[bot]

It solved with me after downgrading react-native-svg-transformer version to

"react-native-svg-transformer": "^0.14.3",

abanoub2amin avatar May 03 '23 13:05 abanoub2amin

Hello, gentlemen! I found a solution for the root cause. You don't need to remove or install babel plugins. Just do what is said in -- babel/babel#8417 (comment) Add "class properties" plugin in the list (there are all in -- module:metro-react-native-babel-preset but in different order), if you didn't already.

"plugins": [
      "@babel/plugin-transform-flow-strip-types",
      "@babel/plugin-proposal-class-properties",
      ...
],

Adding @babel/plugin-transform-flow-strip-types to babel plugins solved the issue for us. Note that we already had @babel/plugin-proposal-class-properties in babel plugins.

Hi, I was having the same problem, needed to use the decorators for Mobx, adding @babel/plugin-transform-flow-strip-types just saved my day...

mtzfactory avatar May 24 '23 09:05 mtzfactory

For me this helped: https://stackoverflow.com/a/76994931

Unfortunately, it's only a workaround not a solution as it ivolves modifying node_modules contents.

kodzonko avatar Aug 29 '23 18:08 kodzonko