我所有的react-native项目都显示错误TypeError:cb.apply不是函数

问题描述 投票:0回答:6

我对反应原生还很陌生。我的所有项目早上都运行良好,但不知何故它们停止了工作。当我运行react-native start 和react-native run-android 时,该应用程序会安装在设备上,但随后会出现此错误,而以前没有发生过。

Loading dependency graph, done.
 DELTA  [android, dev] ./index.js ░░░░░░░░░░░░░░░░ 0.0% (0/1)/home/yehyaumar/Documents/dumm/busybee/node_modules/graceful-fs/polyfills.js:285
        if (cb) cb.apply(this, arguments)
                   ^

TypeError: cb.apply is not a function
    at /home/yehyaumar/Documents/dumm/busybee/node_modules/graceful-fs/polyfills.js:285:20
    at FSReqCallback.oncomplete (fs.js:169:5)

我什至从头开始克隆了存储库,但错误仍然存在。请帮忙。 RN 版本:0.59.2

我的一个项目的 package.json 文件,

{
  "name": "projectalpha",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "start": "node node_modules/react-native/local-cli/cli.js start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@react-native-community/async-storage": "^1.11.0",
    "axios": "^0.18.0",
    "react": "16.8.3",
    "react-native": "0.59.2",
    "react-native-awesome-alerts": "^1.2.0",
    "react-native-circle-checkbox": "^0.1.6",
    "react-native-circular-progress": "^1.1.0",
    "react-native-gesture-handler": "^1.1.0",
    "react-native-google-places-autocomplete": "^1.3.9",
    "react-native-image-picker": "^0.28.1",
    "react-native-maps": "react-native-community/react-native-maps#master",
    "react-native-maps-directions": "^1.6.0",
    "react-native-onesignal": "^3.2.12",
    "react-native-reanimated": "^1.0.0-alpha.12",
    "react-native-svg": "^9.4.0",
    "react-native-svg-charts": "^5.2.0",
    "react-native-swiper": "^1.5.14",
    "react-native-tab-view": "^2.0.3",
    "react-native-vector-icons": "^6.4.2",
    "react-navigation": "^3.6.0",
    "unstated": "^2.1.1"
  },
  "devDependencies": {
    "@babel/core": "^7.4.0",
    "@babel/runtime": "^7.4.2",
    "@react-native-community/eslint-config": "^0.0.3",
    "babel-jest": "^24.5.0",
    "eslint": "^5.15.3",
    "jest": "^24.5.0",
    "metro-react-native-babel-preset": "^0.53.1",
    "react-test-renderer": "16.8.3"
  },
  "jest": {
    "preset": "react-native"
  },
  "rnpm": {
    "assets": [
      "./assets/fonts/"
    ]
  }
}
react-native
6个回答
34
投票

Ciao,这个问题与

graceful-fs
包有关。请重新安装
graceful-fs
:

npm install graceful-fs --save-dev

问题应该得到解决。


14
投票

对我来说,

npm cache clean —force
不起作用,并且graceful-fs在我的项目中不是直接依赖项。

OS: Ubuntu
Node: 14.6.0 
Npm: 6.14.7

我仍然不确定为什么会出现此错误,但它有效。我在 Flavio Copes 的帖子中找到了这个解决方案。

打开文件

/node_modules/graceful-fs/polyfills.js
,错误来自哪里。

这是给出问题的函数:

function statFix (orig) {
  if (!orig) return orig
  // Older versions of Node erroneously returned signed integers for
  // uid + gid.
  return function (target, cb) {
    return orig.call(fs, target, function (er, stats) {
      if (!stats) return cb.apply(this, arguments)
      if (stats.uid < 0) stats.uid += 0x100000000
      if (stats.gid < 0) stats.gid += 0x100000000
      if (cb) cb.apply(this, arguments)
    })
  }
}

注释掉这些行(第 62-64 行):

// fs.stat = statFix(fs.stat)
// fs.fstat = statFix(fs.fstat)
// fs.lstat = statFix(fs.lstat)

10
投票

我在尝试在我的一个旧项目(React Native 版本 0.59.x)上启动反应本机开发服务器时遇到了这个问题。对我来说,修复方法是使用

nvm
 将节点版本从 
14 降级为 10


5
投票

转到 C:\Users(您的用户名)\AppData\Roaming 删除 npm 和 npm-cache

如果报错再尝试运行,再次卸载并彻底删除Nodejs,检查上面这两个文件是否仍然不存在,然后重新下载Nodejs。

在我的一台电脑上,第一种方法没有问题,第二种方法需要完全替换 Nodejs 然后才能工作。


0
投票

这是解决方案。

选项1: 关注这个目录 C:\Users(您的用户名)\AppData\Roaming 删除npm文件夹,如果有一个mom缓存文件夹。 运行 npm clean cache --force (现在需要用force来清理缓存) 如果不做选项 2,你现在应该就好了。

选项2: 关注这个目录 C:\Users(您的用户名)\AppData\Roaming 删除npm文件夹,如果有一个mom缓存文件夹。 运行 npm clean cache --force (现在需要用force来清理缓存) 确保与 Nodejs 相关的所有内容都已删除并卸载。 重新安装 Nodejs。 你现在应该很好了


0
投票

我必须使用节点 12.3.1 和 npm 6.9.0 来修复此错误

nvm use 12.3.1

这两个都安装了。

npm install
又开始工作了。

© www.soinside.com 2019 - 2024. All rights reserved.