我所有的 react-native 项目都显示错误 TypeError: cb.apply is not a function

Yeh*_*hya 11 react-native react-native-android

我对本机反应真的很陌生。我所有的项目早上都运行良好,但不知何故他们停止了工作。当我运行 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)
Run Code Online (Sandbox Code Playgroud)

我什至从头开始克隆了 repo,但错误仍然存​​在。请帮忙。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/"
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

Gio*_*ito 28

Ciao,这个问题与graceful-fs包有关。请重新安装graceful-fs

npm install graceful-fs --save-dev
Run Code Online (Sandbox Code Playgroud)

问题应该得到解决。

  • 做得好!我很高兴听到这个消息。这些问题会让你烦恼好几个小时,当你解决后,你会感到非常疲倦,几乎无法再编码了。现在放松一下,喝杯咖啡,然后重新开始编码:)祝你有美好的一天! (5认同)
  • 我对 Graceful-fs 没有任何直接依赖。我也尝试安装graceful-fs,但仍然出现同样的错误。 (4认同)

Mad*_*ari 7

对我来说,npm cache clean —force没有工作,并且优雅-fs 不是我项目中的直接依赖项。

OS: Ubuntu
Node: 14.6.0 
Npm: 6.14.7
Run Code Online (Sandbox Code Playgroud)

我仍然不确定为什么会出现此错误,但它有效。我在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)
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

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

// fs.stat = statFix(fs.stat)
// fs.fstat = statFix(fs.fstat)
// fs.lstat = statFix(fs.lstat)
Run Code Online (Sandbox Code Playgroud)


Kac*_*zuk 7

我在尝试在我的一个旧项目(React Native 版本 0.59.x)上启动 react-native 开发服务器时遇到了这个问题。对我来说,修复从降级的节点版本1410使用NVM

  • 这对我也有用,非常感谢。 (2认同)

小智 5

转到 C:\Users(your username)\AppData\Roaming 删除 npm 和 npm-cache

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

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