React Native中__dirname相关配置报错:无法找到package.json路径
React Native Expo Metro配置报错:__dirname路径问题
问题场景
配置metro.config.js时出现路径错误,报错信息如下:
ConfigError: The expected package.json path: __dirname/package.json does not exist
原配置代码:
const { getDefaultConfig } = require('expo/metro-config'); const DefaultConfig = getDefaultConfig('__dirname'); DefaultConfig.resolver.assetExts.push('cjs'); module.exports = defaultConfig;
错误原因
- 代码把Node.js内置的
__dirname变量用单引号包裹成了字符串字面量'__dirname',导致Metro会尝试寻找名为__dirname的子目录并读取其中的package.json,而非使用__dirname实际指向的当前模块所在目录的绝对路径。 - 原代码存在大小写不一致问题:定义的变量是
DefaultConfig,但导出时写成了defaultConfig,会导致配置无法正常生效。
修正方案
- 移除
__dirname的单引号,直接传入该变量 - 修正导出变量的大小写,保持与定义一致
完整修正代码
const { getDefaultConfig } = require('expo/metro-config'); const DefaultConfig = getDefaultConfig(__dirname); DefaultConfig.resolver.assetExts.push('cjs'); module.exports = DefaultConfig;
内容的提问来源于stack exchange,提问作者JesPster
相关产品推荐
相关产品推荐

