You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Mac环境下React Native初始化项目遇transformFile未定义错误求助

问题

在Mac(M1芯片,macOS 13.3.1)环境初始化React Native项目时,出现以下TypeError错误:

TypeError: Cannot read properties of undefined (reading 'transformFile')
at Bundler.transformFile (/Users/.../node_modules/metro/src/Bundler.js:48:30)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async Object.transform (/Users/.../node_modules/metro/src/lib/transformHelpers.js:101:12)
at async processModule (/Users/victorgelvis/Documents/mts/mts-app/node_modules/metro/src/DeltaBundler/traverseDependencies.js:137:18)
at async traverseDependenciesForSingleFile (/Users/victorgelvis/Documents/mts/mts-app/node_modules/metro/src/DeltaBundler/traverseDependencies.js:131:3)
at async Promise.all (index 0)
at async initialTraverseDependencies (/Users/victorgelvis/Documents/mts/mts-app/node_modules/metro/src/DeltaBundler/traverseDependencies.js:114:3)
at async DeltaCalculator._getChangedDependencies (/Users/victorgelvis/Documents/mts/mts-app/node_modules/metro/src/DeltaBundler/DeltaCalculator.js:164:25)
at async DeltaCalculator.getDelta (/Users/victorgelvis/Documents/mts/mts-app/node_modules/metro/src/DeltaBundler/DeltaCalculator.js:94:16)
at async DeltaBundler.buildGraph (/Users/victorgelvis/Documents/mts/mts-app/node_modules/metro/src/DeltaBundler.js:50:5)

环境信息:

info Fetching system and libraries information...
System:
OS: macOS 13.3.1
CPU: (8) arm64 Apple M1
Memory: 106.48 MB / 8.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 16.20.0 - ~/.nvm/versions/node/v16.20.0/bin/node
Yarn: 1.22.19 - /opt/homebrew/bin/yarn
npm: 8.19.4 - ~/.nvm/versions/node/v16.20.0/bin/npm
Watchman: Not Found
Managers:
CocoaPods: 1.12.1 - /opt/homebrew/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 22.2, iOS 16.2, macOS 13.1, tvOS 16.1, watchOS 9.1
Android SDK: Not Found
IDEs:
Android Studio: Not Found
Xcode: 14.2/14C18 - /usr/bin/xcodebuild
Languages:
Java: Not Found
npmPackages:
@react-native-community/cli: Not Found
react: 17.0.2 => 17.0.2
react-native: 0.67.2 => 0.67.2
react-native-macos: Not Found
npmGlobalPackages:
*react-native*: Not Found

解决方案

这个错误多由Metro与Node/React Native版本不兼容、依赖缺失或配置异常导致,按以下步骤排查:

1. 安装Watchman

Watchman是React Native推荐的文件监听工具,缺失可能引发打包异常,执行:

brew install watchman

2. 修复Metro配置

在项目根目录创建或修改metro.config.js,确保配置正确:

const { getDefaultConfig } = require('@react-native/metro-config');

const config = getDefaultConfig(__dirname);

module.exports = config;

若项目用到SVG资源,可使用完整配置:

const { getDefaultConfig } = require('metro-config');

module.exports = (async () => {
  const { resolver: { sourceExts, assetExts } } = await getDefaultConfig();
  return {
    transformer: {
      babelTransformerPath: require.resolve('react-native-svg-transformer'),
      getTransformOptions: async () => ({
        transform: {
          experimentalImportSupport: false,
          inlineRequires: true,
        },
      }),
    },
    resolver: {
      assetExts: assetExts.filter(ext => ext !== 'svg'),
      sourceExts: [...sourceExts, 'svg'],
    },
  };
})();

3. 清除缓存并重装依赖

清理缓存、重置依赖可解决大部分版本冲突问题:

# 重置Metro缓存
npx react-native start --reset-cache

# 删除依赖目录与锁文件
rm -rf node_modules package-lock.json yarn.lock

# 重装依赖(选对应包管理器)
npm install
# 或
yarn install

# iOS项目需重新安装Pods
cd ios && pod install && cd ..

4. 验证Node版本兼容性

React Native 0.67.x适配Node 14.x-16.x,当前16.20.0符合要求,若问题仍存在,可切换至16.18.0(LTS稳定版):

nvm install 16.18.0
nvm use 16.18.0

5. 安装React Native CLI工具

全局缺失CLI可能导致初始化流程异常,执行:

npm install -g @react-native-community/cli

内容的提问来源于stack exchange,提问作者Victor Alberto Gelvis Oviedo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:57:48