Node.js React Native中的require()解析

Node.js React Native中的require()解析,node.js,react-native,metro-bundler,Node.js,React Native,Metro Bundler,我试图找出为什么require('foo/bar.png')在两个RN项目中的工作方式不同 在一个项目中,foo通过metro.config.js注册为root extraNodeModules: { foo: path.join(__dirname, 'src/foo'), } 在另一个项目中,foo位于app_root/node_模块下 so foo is at app_root/node_modules/foo 因此,在这两个项目中,我都可以做从'foo/somethi

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

在一个项目中,foo通过metro.config.js注册为root

  extraNodeModules: {
    foo: path.join(__dirname, 'src/foo'),
  }
在另一个项目中,foo位于app_root/node_模块下

so foo is at app_root/node_modules/foo
因此,在这两个项目中,我都可以做
从'foo/something'导入一些东西

但是,当涉及到
要求时,两个项目的表现不同


foo/components/hello.js中有一行

 require('foo/assets/image.png')
在第一个项目中,正确找到图像文件

但第二个项目抱怨说它找不到错误
/path/to/root\u project/node\u modules/foo/component/node\u modules/foo/assets/image.png

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

我应该在哪里查找,或者如何调试


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

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

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

我最终从
node\u modules/foo
移动到
src/foo