错误:捆绑失败:TypeError:无法读取未定义的属性“transformFile”,React Native

Posted

技术标签:

【中文标题】错误:捆绑失败:TypeError:无法读取未定义的属性“transformFile”,React Native【英文标题】:error: bundling failed: TypeError: Cannot read property 'transformFile' of undefined, React Native 【发布时间】:2020-07-03 09:15:05 【问题描述】:

每当我运行 react-native start 时都会收到此错误,但最近我在节点模块中安装了 firebase-tools 和 stripe 后开始出现此错误,但在此之前它运行得很好,这里也是错误的堆栈跟踪:

::ffff:127.0.0.1 - - [22/Mar/2020:19:59:30 +0000] "GET /index.bundle?platform=android&dev=true&minify=false HTTP/1.1" 500 - "-" "okhttp/3.12.1"
error: bundling failed: TypeError: Cannot read property 'transformFile' of undefined
    at C:\Users\me\Project\node_modules\react-native\node_modules\@react-native-community\cli\node_modules\metro\src\Bundler.js:87:34
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (C:\Users\me\Project\node_modules\react-native\node_modules\@react-native-community\cli\node_modules\metro\src\Bundler.js:14:24)
    at _next (C:\Users\me\Project\node_modules\react-native\node_modules\@react-native-community\cli\node_modules\metro\src\Bundler.js:34:9)
    at processTicksAndRejections (internal/process/task_queues.js:93:5)

这是我的 package.json:


  "name": "Project",
  "version": "0.0.1",
  "private": true,
  "scripts": 
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  ,
  "dependencies": 
    "card-validator": "6.2.0",
    "firebase-tools": "7.15.1",
    "jetifier": "^1.6.5",
    "prop-types": "15.7.2",
    "react": "^16.13.1",
    "react-art": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-geocode": "0.2.1",
    "react-native": "0.61.5",
    "react-native-country-picker-modal": "1.9.8",
    "react-native-elements": "1.2.7",
    "react-native-firebase": "5.6.0",
    "react-native-geocoding": "0.4.0",
    "react-native-gesture-handler": "1.5.2",
    "react-native-maps": "0.26.1",
    "react-native-paper": "3.2.1",
    "react-native-reanimated": "1.4.0",
    "react-native-restart": "0.0.14",
    "react-native-shadow": "^1.2.2",
    "react-native-svg": "12.0.3",
    "react-native-vector-icons": "6.6.0",
    "react-native-web": "^0.9.13",
    "react-navigation": "4.0.10",
    "react-navigation-drawer": "2.3.3",
    "react-navigation-stack": "1.10.3",
    "stripe": "^8.33.0",
    "tipsi-stripe": "7.5.1",
    "typescript": "^3.8.3"
  ,
  "devDependencies": 
    "@babel/core": "7.7.4",
    "@babel/runtime": "7.7.4",
    "@react-native-community/eslint-config": "0.0.5",
    "babel-jest": "24.9.0",
    "eslint": "^5.0.0",
    "jest": "24.9.0",
    "metro-react-native-babel-preset": "0.56.3",
    "react-test-renderer": "16.9.0"
  ,
  "jest": 
    "preset": "react-native"
  

我也很清楚另一个在 *** 上存在相同问题的问题,但该问题的解决方案对我不起作用,因为 npm 在我运行 react-native start 时忽略了它,因为这些模块已被弃用,我仍然遇到同样的错误

【问题讨论】:

我刚才遇到了同样的问题,删除package-lock.jsonnode_modules 并重新启动应用程序对我有用。检查一次 删除 package-lock.json 也对我有用(我在更新 npm 后遇到了这个问题) 【参考方案1】:

将 NodeJS 降级到 LTS 版本总是有帮助的。我在尝试使用 NodeJS^17 时遇到了同样的问题,但是当我将其降级到 NodeJS^14 并重新安装 node_modules 时,一切都已修复。

【讨论】:

这适用于我使用 nodejs 16,当前 LTS 版本【参考方案2】:

该问题下的第一条评论中的解决方案对我有用,即删除 node_modules 和 package-lock.json,但是,我不想这样做,因为我知道我会遇到更多错误,而且果然我确实如此,但至少我能够修复它们并让它运行,这与我询问的顽固错误不同。所以是的,这种方法有效,但我绝对希望有人有更好的方法。

【讨论】:

没有为我做任何事情,所以一定有更好的方法...... @FMaz008 试试下面这个解决方案【参考方案3】:

我遇到了这个错误。我做了两件事,我认为这导致我解决了这个问题:

我在 monorepo 中工作,所以我将以下代码添加到我的 package.json
"workspaces": 
    "nohoist": [
        "react-native",
        "react-native/**",
        "react",
        "react/**"
    ]

我将我的 metro-react-native-babel-preset 软件包从 ^0.58.0 升级到最新版本 - ^0.59.0 (yarn add -D metro-react-native-babel-preset)

【讨论】:

【参考方案4】:

这是一个旧线程,但我想贡献一下,因为它是在搜索“无法读取未定义的属性 'transformFile'”时出现在 Google 中的第一个线程。

这可能不是永久修复,因为它似乎在安装新依赖项时突然出现,我也在使用 Expo。

为了解决这个问题,我一直在安装依赖项,然后使用 yarn-upgrade-all 通过您的 package.json 并将它们全部升级到最新版本。这显然会导致冲突,但就我的使用而言,它正在工作(到目前为止)并且不需要像删除文件夹或文件这样的激烈操作。

【讨论】:

【参考方案5】:

我对 Nodejs 版本 17.1.0 有同样的问题。刚刚卸载它并重新安装 Nodejs 版本 16.13.0。

【讨论】:

【参考方案6】:

我遇到了同样的问题。我正在运行 npm v7。和节点 v10。我将两者都升级到了最新版本,它开始工作了。

【讨论】:

【参考方案7】:

当我在 Metro config 中使用内联 require 进行性能优化时,发生了这个错误。

我解决了这个问题,将 Metro 配置属性“blacklist”更改为“blockList”:

   return 
    preloadedModules: moduleMap,
    transform:  inlineRequires:  blockList: moduleMap  ,
  

【讨论】:

以上是关于错误:捆绑失败:TypeError:无法读取未定义的属性“transformFile”,React Native的主要内容,如果未能解决你的问题,请参考以下文章

模块构建失败:TypeError:无法读取未定义的属性“上下文” - Webpack

模块构建失败:TypeError:无法读取 Object.module.exports 处未定义的属性“上下文”

TypeError:无法读取未定义的属性“then”

模块构建失败:TypeError:无法读取未定义的属性“sassLoader”

TypeError:无法读取 React-hooks 中未定义的属性“toLowerCase”

如何使用自定义错误消息捕获“TypeError:无法读取未定义的属性(读取'0')”?