【问题标题】:main.jsbundle does not exist. This must be a bug with.. main.jsbundle issue after upgrading to react-native 0.63main.jsbundle 不存在。升级到 react-native 0.63 后,这一定是一个错误。 main.jsbundle 问题
【发布时间】:2020-10-29 13:03:55
【问题描述】:

“反应”:“16.13.1”, "react-native": "0.63.0",

遇到下面的 main.jsbundle 不存在。在升级到 react-native 0.63 后尝试存档时,这一定是一个问题。想知道有没有人遇到同样的问题

【问题讨论】:

  • 在我的情况下,这似乎与使用 babel-plugin-module-resolver 进行短期绝对导入有关。仔细查看构建日志,我可以看到它在第一次遇到其中一个导入时无法生成 jsbundle。我还没有找到解决办法。我认为回到相对进口会起作用......
  • @IsaacOveracker 这里的情况完全相同。我想知道是不是这个插件因为某种原因不能工作,或者其他 babel 功能也不能工作。
  • @EmpireJones 我注意到除了配置babel-plugin-module-resolver 设置的babel.config.js 之外,我还有默认生成的.babelrc 文件。我删除了 .babelrc 并进一步生成了 jsbundle,但遇到了与我的 monorepo nohoist 规则缺少一些库相关的另一个错误。为什么这只在 0.63.0 而不是 0.62.2 上失败,我仍然无法理解。我已经做得更进一步了,但现在我遇到了类似于 Sachanski 的答案的错误——相对导入。
  • @EmpireJones 我找到了解决方案。请参阅下面的my answer

标签: ios xcode react-native


【解决方案1】:

这在涉及babel-plugin-module-resolver的项目中对我有用:

  1. 在 Xcode 中打开您的 ios/*.xcworkspace
  2. 在项目导航器中单击您的项目名称。
  3. 在左侧窗格中单击目标的名称。
  4. 点击构建阶段。
  5. 扩展捆绑 React Native 代码和图像阶段。
  6. 在脚本的第一行,添加cd $PROJECT_DIR/.. 以上一级目录。

整个脚本应该是这样的:

cd $PROJECT_DIR/..
export NODE_BINARY=node
./node_modules/react-native/scripts/react-native-xcode.sh

请注意,如果此问题的来源是 0.63.0 中的错误,这可能会中断,因此您可能需要在以后的版本中撤消此操作。

感谢@typester 在facebook/react-native #29351 上提出这个问题。

【讨论】:

  • 我不想相信,但这也对我有用。谢谢!
  • 谢谢!我很想知道为什么这对原始文件有效,它只是指向 ../node_modules。
  • 我运气不好 :(
【解决方案2】:

找到解决办法

  1. 在 Xcode Build Phases -> Copy Bundle Resources,添加main.jsbundle

  1. package.json,添加
"scripts": {
    "bundle:ios": "react-native bundle --entry-file index.ios.js --platform ios --dev false --bundle-output ios/main.jsbundle --assets-dest ios",
    "postinstall": "yarn run bundle:ios"
    ...
  },

所以main.jsbundle 将被生成

【讨论】:

  • 您知道最初是什么促成了这种变化吗?当然这看起来很合乎逻辑,但为什么以前不需要 react-native bundle 调用?
  • 它可以工作,但奇怪的是,所有资产都丢失了,没有图像显示
  • 对我来说这也适用,但也不包括资产。
  • 这对我有用:)
【解决方案3】:

对我来说,发生错误是因为我有这样的导入:

import Component from '..';

用相对路径替换那些 (@components/path/to/component) 解决了这个问题。

不知道为什么现在解决这些路径有问题。

我深入研究了node_modules/react-native/node_modules/@react-native-community/cli/build/commands/bundle/buildBundle.js 并在buildBundle 函数中放置了一个catch 块,以便查看导入有问题的组件。

我认为@changey 的解决方案也有效,它只需要在 CI 中添加一个额外的构建步骤。

【讨论】:

    【解决方案4】:

    以上都没有为我解决这个问题,但它适用于这个 PR,它可能很快就会发布https://github.com/facebook/react-native/pull/29477

    以防万一有人觉得它有用:)

    【讨论】:

      【解决方案5】:

      把你的 babel.config.js 改成 .babelrc.js 就可以了

      【讨论】:

      • 这对我没有任何改变。
      • 这为我修复了它,但我粗心大意地否决了投票,stackoverflow 不允许我更改它!
      【解决方案6】:

      我从 0.62.5 升级到 0.63 遇到了同样的错误。

      就我而言,我发现在“Bundle React Native 代码和图像”构建阶段执行的 react-native-xcode.sh 脚本将错误的条目文件 (index.js) 传递给构建命令,而它应该使用 index.ios.js .不知道为什么这在 0.63 中发生了变化。

      一个对我有用的解决方案是在运行脚本时指定正确的入口文件:

      1. 在 Xcode 中,转到构建阶段 -> 捆绑 React Native 代码和图像
      2. 更改这部分脚本 ../node_modules/react-native/scripts/react-native-xcode.shENTRY_FILE=index.ios.js ../node_modules/react-native/scripts/react-native-xcode.sh

      【讨论】:

      • 但是我没有index.ios.js,我还能用index.ios.js吗?
      • @leeCoder 无论你的 iOS 入口文件是什么(也许你只有一个 index.js),只要确保 react-native-xcode.sh 脚本使用相同的文件。
      • 更改入口点不是答案。 index.ios.js 和 index.android.ios 是特定于平台的文件,是 RN 的一个特性,是 index.js 的同义词。 reactnative.dev/docs/platform-specific-code 。如果您使用了自动升级,那么在此过程中,hermes 设置可能会中断,从而导致您的入口点出现问题。
      【解决方案7】:

      当我运行yarn bundle-ios 时,出现了以下消息。

      无法从src/scenes/Home/index.js 解析模块config/dimension:在项目中找不到配置/维度。

      我一直在使用react-native-module-resolver。我为路径别名配置了“@configs”。如您所见,上面的@不见了。

      改正一下,main.jsbundle 终于创建好了。

      【讨论】:

        【解决方案8】:
        【解决方案9】:

        对我来说,我在同一个项目中有 .babelrcbabel.config.js 文件。所以 RN 找不到某些导入的库。所以我这样修改了我的.babelrc

         {
           "extends": "./babel.config.js", 
           "plugins": [ //bla bla 
        
           ],
         }
        

        这就是我停止错误的原因。

        【讨论】:

          【解决方案10】:

          此错误特定于 Xcode 项目本身的架构设置。如果设置了错误的拱门,您将收到此错误,因为捆绑包构建失败。

          这是针对在 Xcode 12.5+ 上收到此错误的任何人的更新答案

          删除缓存、重新安装库和更新 Pod

          有时此错误纯粹是由于缓存引用了不同的架构。使用 react-native-clean-project 实用程序重置与项目相关的所有缓存、重新安装包和更新 pod。这通常会清除我丢失的大部分捆绑包错误。

          验证 Xcode 构建设置(x86_64 上的 Xcode 12.5+)

          对于生产:您只需确保将架构设置设置为标准架构(默认为${ARCHS_STANDARD})。 Excluded Architectures 应为空,如果 VALID_ARCHS 存在,请务必重命名,然后点击存档。

          模拟器:你仍然需要为模拟器添加VALID_ARCHS变量,但是将其设置为项目的工作区,将值设置为x86_64。为了保持整个项目的单一设置,请确保 VALID_ARCHS 尚未在 Pods 项目或 App 项目中设置。如果是,请删除该变量,然后在工作区上设置该值。单击“运行”开始您的模拟构建。

          现在,当您需要构建生产环境时,只需将 VALID_ARCHS 重命名为 SIM_VALID_ARCHS,然后归档即可。 ?

          【讨论】:

            【解决方案11】:

            在 RN v0.63 中看到了类似的问题。查看错误日志发现这是节点内存超出范围的问题(EG 无法构建捆绑包)。我通过添加来解决这个问题:

            export NODE_OPTIONS=--max_old_space_size=1024
            

            Bundle React Native code and images phase脚本

            EG:

            export NODE_BINARY=node
            export NODE_OPTIONS=--max_old_space_size=1024
            ../node_modules/react-native/scripts/react-native-xcode.sh
            

            【讨论】:

              猜你喜欢
              • 2018-09-05
              • 2022-11-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2020-11-06
              • 2022-11-07
              相关资源
              最近更新 更多