我在这里与React native有一个奇怪的问题。也许它甚至不是RN,而是Metro Bundler。

我刚从字面上创建了一个全新的项目


反应本机的TestProject


之后,我简单地跑了


react-native run-ios --simulator =“ iPhone 7”


通常,当我运行ios时,Metro捆绑程序将在“ / Users / fred / Documents / Development / TestProject”内部查找-我的index.js文件所在的位置。

但是,由于某种原因,并且现在在我创建的每个新项目中,它都将查找以下路径:
react-native - Metro Bundler在react-native目录中寻找JS文件-LMLPHP

并导致此错误:
react-native - Metro Bundler在react-native目录中寻找JS文件-LMLPHP

我也尝试过更改metro.config.js中的项目根路径

const path = require('path');

module.exports = {
  transformer: {
    getTransformOptions: async () => ({
      transform: {
        experimentalImportSupport: false,
        inlineRequires: false,
      },
    }),
  },
  projectRoot: path.resolve(__dirname),
};


但这似乎不起作用。

有人知道为什么会这样吗,也许我该如何解决?

如果我错过了我应该在此处发布的任何内容,请告诉我。

编辑1:

我设法使它以我不太喜欢的方式运行。
一旦运行了react-native run-ios,并且控制台出现了错误的node_modules/react-native JS Metro Bundler控制台,我就关闭该控制台,并保持模拟器打开。

然后,我运行此命令react-native start --reset-cache,并运行“ Command + R”模拟器-这将导致执行正确的路径。请看以下屏幕截图:

react-native - Metro Bundler在react-native目录中寻找JS文件-LMLPHP

然后关闭Metro bundler控制台,并运行react-native start --reset-cache

react-native - Metro Bundler在react-native目录中寻找JS文件-LMLPHP

在这里我们可以看到捆绑程序现在查找正确的根路径:
react-native - Metro Bundler在react-native目录中寻找JS文件-LMLPHP

然后我只是Command + R模拟器:
react-native - Metro Bundler在react-native目录中寻找JS文件-LMLPHP

现在,尽管我现在可以继续工作-我的意思是,为什么现在会发生这种情况?我一直只使用旧的react-native run-ios,一切都很好。用这种方式做事是很麻烦且不必要的。

任何帮助将不胜感激!

编辑2:

我现在在这里-在哪里更改引起问题的根字符串:

node_modules/@react-native-community/cli/build/cliEntry.js

setupAndRun()函数的内部。


const root = options.projectRoot吗? _path()。default.resolve(options.projectRoot):process.cwd();


也许有人知道为什么这条线会引起问题吗?

最佳答案

所以-一个月后,我意识到了-我was doing this within the Visual Studio Code Terminal。我只是切换到不在VS Code中的主终端,并且BOOM可以按预期工作。 Tried it within VS Code, and it failed!找到了罪魁祸首!与本机或Metro Bundle无关!该死的VS Code!仍然爱你!

07-24 09:47
查看更多