React Native 中的 require() 解析

require() resolution in React Native

我正在尝试找出为什么 require('foo/bar.png') 在两个 RN 项目中的工作方式不同

在一个项目中,foo 通过 metro.config.js

注册为 root
  extraNodeModules: {
    foo: path.join(__dirname, 'src/foo'),
  }

在另一个项目中,foo 位于 app_root/node_modules

so foo is at app_root/node_modules/foo

所以在这两个项目中,我都可以做到import something from 'foo/something'

但是当谈到 require 时,两个项目的表现不同..


foo/components/hello.js

中有一行
 require('foo/assets/image.png')

在第一个项目中,正确找到了图片文件,

但是第二个项目抱怨找不到错误 /path/to/root_project/node_modules/foo/component/node_modules/foo/assets/image.png

似乎 require 假设调用 require 的地方应该是项目根目录或其他东西。

我应该在哪里查找或如何调试它?

我可以在 ReactNative 项目中打印 module.paths 吗?

Require 不是 React 语句 - 它是 Node.js 语句,请改用 import。

两个项目的路径是否相同?如果在第一个项目中 require() 工作,那么它应该在第二个项目中工作,一个不工作的原因是你的路径在第二个项目中不正确。因此再次检查。