React Native中的require()解析

时间:2019-10-13 07:38:20

标签: 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_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吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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