React Native中的require()分辨率
我试图找出为什么require('foo/bar.png')
在两个RN项目中的工作方式不同
在一个项目中,foo通过metro.config.js注册为根用户
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()中工作,那么它应该在第二个项目中工作,一个不起作用的原因是,在第二个项目中您的路径不正确。因此,请再次检查。