在React Native中,黑名单模块没有任何效果。

10 浏览
0 Comments

在React Native中,黑名单模块没有任何效果。

根据之前提出的问题 如何在React Native的打包工具中禁用我的包的依赖项中的特定node_modules?,我在项目的根目录中创建了一个名为rn-cli.config.js的文件。文件内容如下:

var blacklist = require('react-native/packager/blacklist');
var config = {
  getBlacklistRE(platform) {
    return blacklist(platform, [
      /node_modules\/react\/lib\/TouchHistoryMath.js/
    ]);
  }
};
module.exports = config;

我试图直接定位到该模块,因为它是唯一引起两个模块具有相同名称错误的模块。但是当我尝试重新运行我的项目(使用xCode启动)时,我仍然会得到同一个模块的重复错误。我需要做其他事情吗,而不仅仅是创建这个文件吗?

0
0 Comments

在使用React Native的Blacklisting模块时,可能会遇到它没有任何效果的问题。这个问题的出现可能是因为没有正确地配置Blacklisting模块的路径或者没有正确地使用它。下面是解决这个问题的原因和方法。

问题的原因:

1. 可能没有正确地配置modulePaths。在配置文件中,需要将modulePaths的路径传递给const modulePaths数组。

2. 可能没有正确地引入所需的模块。在配置文件中,需要引入require、fs和path模块。

解决方法:

1. 确保正确地配置modulePaths。可以通过在配置文件中添加以下代码来配置modulePaths:

const modulePaths = require('./modulePaths');

2. 确保正确地引入所需的模块。可以通过在配置文件中添加以下代码来引入所需的模块:

const resolve = require('path').resolve;
const fs = require('fs');

3. 确保正确地设置Blacklisting模块的路径。可以通过在配置文件中添加以下代码来设置Blacklisting模块的路径:

const moduleMap = {};
modulePaths.forEach(path => {
  if (fs.existsSync(path)) {
    moduleMap[resolve(path)] = true;
  }
});

4. 返回正确的transform选项和preloadedModules。可以通过在配置文件中添加以下代码来返回正确的transform选项和preloadedModules:

return {
  preloadedModules: moduleMap,
  transform: { inlineRequires: { blacklist: moduleMap } },
};

5. 确保正确地导出配置。可以通过在配置文件中添加以下代码来导出配置:

module.exports = config;

希望以上方法能够解决Blacklisting模块在React Native中没有效果的问题。如果需要更多详细信息,请参考React Native文档中关于性能优化的部分。

0