TypeError: cb.apply is not a function
TypeError: cb.apply is not a function
我正在尝试 运行 一个使用 Metro Bundler 的现有 React Native 项目。我的操作系统是 Ubuntu 20.04,我尝试在物理 Android 设备和我用 Android 创建的 Android 模拟器上 运行 该应用程序] 工作室。
我已成功克隆项目的存储库,安装其依赖项 (yarn
),构建应用程序 (react-native run-android
),并在我的 phone 和模拟器上打开应用程序。但是,运行ning react-native start
出错说 TypeError: cb.apply is not a function
。这是 运行ning 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 上遇到了非常相似的问题,但它在我的本地计算机(节点 13)上运行正常。在 CI 中,当使用我两个月前发布的代码在 CircleCI 或 AppCenter 上构建项目时,会抛出以下错误。它只是没有意义,就像节点已动态损坏。
我用节点 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
添加一个解决方案,以不允许任何库使用“4.2.4”之前的 graceful-fs 版本。现在它再次与节点 12 一起工作。
PS:不要忘记 运行 yarn
或 npm run install
更新您的 .lock
。如果此解决方案对您不起作用,请在 Node 12.18.3
上对与此问题相关的 thread 添加评论
"devDependencies": {
...
},
"resolutions": {
"graceful-fs": "4.2.4"
},
如果你安装了nvm,那就更简单了。要检查这一点,运行
nvm --version
然后安装最新的 lts 版本的节点,运行
nvm install --lts
这对我有用,如果有帮助请告诉我
我今天做build的时候也遇到了这个问题。 (运行 节点 12.8.3)
我重新安装了以下软件包:
npm install graceful-fs --save-dev
这解决了上面的问题。
我在两台电脑上都解决了。需要做更多的工作。
选项 1:
- 关注此目录
C:\Users(your username)\AppData\Roaming
- 删除 npm 文件夹
- 如果有一个 npm 缓存 文件夹。 运行
npm clean cache -force
,或 windows 上的 npm cache clean -force
(— 现在需要强制清理缓存)
- 如果不执行选项 2,你现在应该好了。
选项 2:
- 关注此目录
C:\Users(your username)\AppData\Roaming
- 删除 npm 文件夹
- 如果有一个 npm 缓存 文件夹。 运行
npm clean cache -force
linux,或 npm cache clean
windows(- 现在需要强制清理缓存)
- 确保删除所有与 Nodejs 相关的内容
- 并卸载了 NodeJS。
- 重新安装 Nodejs。
- 你现在应该好了。
在我的例子中,我试图使用 Husky
,但出现了这个错误:
husky > commit-msg (node v15.6.0)
npm ERR! cb.apply is not a function
npm ERR! A complete log of this run can be found in:
npm ERR! ~/.npm/_logs/2021-01-24T06_04_04_218Z-debug.log
>>> Installation [ 'commitlint@latest' ] fail with code 1 <<<
husky > commit-msg hook failed (add --no-verify to bypass)
我运行下面的命令问题解决了
npm i -D commitlint
如果您使用的是 Windows 10,我通过执行以下操作解决了这个问题:
首先,这是错误:
- 导航到
%USERPROFILE%\AppData\Roaming\
- 通过键入
Run npm clean cache —force
删除可能存在的任何缓存
- 删除
NPM
文件夹
- 重新安装 Node.js 并确保在 Node.js
的安装过程中包含 NPM
完成上述步骤后,我可以像以前一样运行 npm 并添加我需要的模块。
这里有一个 Ubuntu 20.04 用户,节点为 16.0.0。我在 运行:
时遇到了同样的错误
> npx create-react-app [my app]
我发现我必须重新安装 create-react-app(先从 node_modules 中删除它)才能解决。
> npm install create-react-app
在 Windows:
转到路径
C:/用户/{用户}/AppData/Roaming
删除2个文件夹
npm
npm-缓存
在路径
npm 清理缓存 —force
您的节点版本与您尝试使用的 libraries/frameworks 不匹配。
尝试更新您的节点版本并检查。
最好用nodist/nvm弹指升级或降级。
我正在尝试 运行 一个使用 Metro Bundler 的现有 React Native 项目。我的操作系统是 Ubuntu 20.04,我尝试在物理 Android 设备和我用 Android 创建的 Android 模拟器上 运行 该应用程序] 工作室。
我已成功克隆项目的存储库,安装其依赖项 (yarn
),构建应用程序 (react-native run-android
),并在我的 phone 和模拟器上打开应用程序。但是,运行ning react-native start
出错说 TypeError: cb.apply is not a function
。这是 运行ning 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 上遇到了非常相似的问题,但它在我的本地计算机(节点 13)上运行正常。在 CI 中,当使用我两个月前发布的代码在 CircleCI 或 AppCenter 上构建项目时,会抛出以下错误。它只是没有意义,就像节点已动态损坏。
我用节点 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
添加一个解决方案,以不允许任何库使用“4.2.4”之前的 graceful-fs 版本。现在它再次与节点 12 一起工作。
PS:不要忘记 运行 yarn
或 npm run install
更新您的 .lock
。如果此解决方案对您不起作用,请在 Node 12.18.3
"devDependencies": {
...
},
"resolutions": {
"graceful-fs": "4.2.4"
},
如果你安装了nvm,那就更简单了。要检查这一点,运行
nvm --version
然后安装最新的 lts 版本的节点,运行
nvm install --lts
这对我有用,如果有帮助请告诉我
我今天做build的时候也遇到了这个问题。 (运行 节点 12.8.3)
我重新安装了以下软件包:
npm install graceful-fs --save-dev
这解决了上面的问题。
我在两台电脑上都解决了。需要做更多的工作。
选项 1:
- 关注此目录
C:\Users(your username)\AppData\Roaming
- 删除 npm 文件夹
- 如果有一个 npm 缓存 文件夹。 运行
npm clean cache -force
,或 windows 上的npm cache clean -force
(— 现在需要强制清理缓存) - 如果不执行选项 2,你现在应该好了。
- 关注此目录
选项 2:
- 关注此目录
C:\Users(your username)\AppData\Roaming
- 删除 npm 文件夹
- 如果有一个 npm 缓存 文件夹。 运行
npm clean cache -force
linux,或npm cache clean
windows(- 现在需要强制清理缓存) - 确保删除所有与 Nodejs 相关的内容
- 并卸载了 NodeJS。
- 重新安装 Nodejs。
- 你现在应该好了。
- 关注此目录
在我的例子中,我试图使用 Husky
,但出现了这个错误:
husky > commit-msg (node v15.6.0)
npm ERR! cb.apply is not a function
npm ERR! A complete log of this run can be found in:
npm ERR! ~/.npm/_logs/2021-01-24T06_04_04_218Z-debug.log
>>> Installation [ 'commitlint@latest' ] fail with code 1 <<<
husky > commit-msg hook failed (add --no-verify to bypass)
我运行下面的命令问题解决了
npm i -D commitlint
如果您使用的是 Windows 10,我通过执行以下操作解决了这个问题:
首先,这是错误:
- 导航到
%USERPROFILE%\AppData\Roaming\
- 通过键入
Run npm clean cache —force
删除可能存在的任何缓存
- 删除
NPM
文件夹 - 重新安装 Node.js 并确保在 Node.js 的安装过程中包含 NPM
完成上述步骤后,我可以像以前一样运行 npm 并添加我需要的模块。
这里有一个 Ubuntu 20.04 用户,节点为 16.0.0。我在 运行:
时遇到了同样的错误> npx create-react-app [my app]
我发现我必须重新安装 create-react-app(先从 node_modules 中删除它)才能解决。
> npm install create-react-app
在 Windows:
转到路径 C:/用户/{用户}/AppData/Roaming
删除2个文件夹 npm npm-缓存 在路径
npm 清理缓存 —force
您的节点版本与您尝试使用的 libraries/frameworks 不匹配。 尝试更新您的节点版本并检查。
最好用nodist/nvm弹指升级或降级。