首页 > 解决方案 > React Native 中的 require() 解析

问题描述

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

标签: node.jsreact-nativemetro-bundler

解决方案


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


推荐阅读