1. ホーム
  2. android

[解決済み] TypeError: cb.apply は関数ではありません。

2022-01-30 14:03:29

質問

Metro Bundlerを使用する既存のReact Nativeプロジェクトを実行しようとしています。オペレーティング システムは Ubuntu 20.04 で、物理的な Android デバイスと Android Studio で作成した Android シミュレーターの両方で、アプリを実行しようと試みました。

プロジェクトのレポをクローンし、依存関係をインストールしました ( yarn )、アプリをビルドし ( react-native run-android ) を作成し、携帯電話やシミュレータでアプリを開きました。しかし react-native start というエラーが出ます。 TypeError: cb.apply is not a function . 以下は、実行時に得られる全情報とエラーです。 react-native start :

$ react-native start
warn Your project is using deprecated "rnpm" config that will stop working from next release. Please use a "react-native.config.js" file to configure the React Native CLI. Migration guide: https://github.com/react-native-community/cli/blob/master/docs/configuration.md
warn The following packages use deprecated "rnpm" config that will stop working from next release:
  - rn-fetch-blob: https://npmjs.com/package/rn-fetch-blob
Please notify their maintainers about it. You can find more details at https://github.com/react-native-community/cli/blob/master/docs/configuration.md#migration-guide.
┌──────────────────────────────────────────────────────────────────────────────┐
│                                                                              │
│  Running Metro Bundler on port 8081.                                         │
│                                                                              │
│  Keep Metro running while developing on any JS projects. Feel free to        │
│  close this tab and run your own Metro instance if you prefer.               │
│                                                                              │
│  https://github.com/facebook/react-native                                    │
│                                                                              │
└──────────────────────────────────────────────────────────────────────────────┘

warn Your project is using deprecated "rnpm" config that will stop working from next release. Please use a "react-native.config.js" file to configure the React Native CLI. Migration guide: https://github.com/react-native-community/cli/blob/master/docs/configuration.md
warn The following packages use deprecated "rnpm" config that will stop working from next release:
  - rn-fetch-blob: https://npmjs.com/package/rn-fetch-blob
Please notify their maintainers about it. You can find more details at https://github.com/react-native-community/cli/blob/master/docs/configuration.md#migration-guide.
Looking for JS files in
   /home/ggiuffre/Documents/squib/app 

Loading dependency graph, done.
 BUNDLE  [android, dev] ./index.js ░░░░░░░░░░░░░░░░ 0.0% (0/1)/home/ggiuffre/Documents/squib/app/node_modules/@react-native-community/cli/node_modules/graceful-fs/polyfills.js:285
        if (cb) cb.apply(this, arguments)
                   ^

TypeError: cb.apply is not a function
    at /home/ggiuffre/Documents/squib/app/node_modules/@react-native-community/cli/node_modules/graceful-fs/polyfills.js:285:20
    at FSReqCallback.oncomplete (fs.js:169:5)


インストール graceful-fs (が推奨する 別記事 を実行しても、何も変わらず、同じエラーが発生します。

何が問題なのでしょうか?よろしくお願いします。

解決方法を教えてください。

CI上では非常に似たような問題がありましたが、ローカルマシン(Node 13)では正常に動作しています。CIでは、2ヶ月前にリリースしたコードでCircleCIやAppCenterでプロジェクトをビルドすると、以下のようなエラーを投げます。まるでnodeが動的に壊れてしまったかのような、意味不明な状態です。

同じコードをノード10、12、14でテストしましたが、現在はノード10(10.22.0)だけで動作しています。

私が出たエラー

/home/circleci/my-app/node_modules/@react-native-community/cli/node_modules/graceful-fs/polyfills.js:285
        if (cb) cb.apply(this, arguments)
                   ^

TypeError: cb.apply is not a function
    at /home/circleci/my-app/node_modules/@react-native-community/cli/node_modules/graceful-fs/polyfills.js:285:20
    at FSReqCallback.oncomplete (fs.js:169:5)

> Task :app:bundleReleaseJsAndAssets FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:bundleReleaseJsAndAssets'.
> Process 'command 'node'' finished with non-zero exit value 1

アップデイト

私の問題を解決してくれたのは、解決策を package.json は、graceful-fs の "4.2.4" より前のバージョンを使用する lib を許可しないようにするためです。これで、node12で再び動作するようになりました。

追記:忘れずに yarn または npm run install を更新してください。 .lock . この解決策がうまくいかない場合は、以下のコメントを追加してください。 スレッド Node 12.18.3でのこの問題に関して

  "devDependencies": {
    ...
  },
  "resolutions": {
    "graceful-fs": "4.2.4"
  },