0

我试图找出为什么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 吗?

4

2 回答 2

0

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

于 2019-10-13T07:49:47.393 回答
0

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

于 2019-10-14T08:11:49.357 回答