【问题标题】:Why does mainjs.bundle not build with ReactNative 0.25.1为什么 main js.bundle 不使用 React Native 0.25.1 构建
【发布时间】:2016-09-10 20:00:12
【问题描述】:

我必须禁用 nvm 并通过 brew 安装 node-6.0.0 才能在我的 iOS 设备上使用 9.3.1 获得全新的、未更改的 RN 应用程序。

无论我做什么,mainjs.bundle 都不会重新创建。我将 Schema 从 Debug 切换到 Release 并更改 AppDelegate.m 以便从包中读取 JS,而不是从服务器中读取。但是在我编译应用程序的那一刻,我收到以下错误:

+ DEST=/Users/foobar/Library/Developer/Xcode/DerivedData/TestSome-fpsorufynyrzmuceyzbnallqkbrd/Build/Products/Release-iphonesimulator/TestSome.app + node /Users/foobar/tmp/reacttest/TestSome/node_modules/react-native/local-cli/cli.js bundle --entry-file index.ios.js --platform ios --dev false --bundle-output /Users/foobar/Library/Developer/Xcode/DerivedData/TestSome-fpsorufynyrzmuceyzbnallqkbrd/Build/Products/Release-iphonesimulator/TestSome.app/main.jsbundle --assets-dest /Users/foobar/Library/Developer/Xcode/DerivedData/TestSome-fpsorufynyrzmuceyzbnallqkbrd/Build/Products/Release-iphonesimulator/TestSome.app /Users/foobar/tmp/reacttest/TestSome/node_modules/react-native/local-cli/cli.js:123 class CreateSuppressingTerminalAdapter extends TerminalAdapter { ^^^^^ SyntaxError: Unexpected reserved word at exports.runInThisContext (vm.js:73:16) at Module._compile (module.js:443:25) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load (module.js:310:12) at Function.Module.runMain (module.js:501:10) at startup (node.js:129:16) at node.js:814:3 Command /bin/sh failed with exit code 1

在我看来,6to2 转译由于某种原因失败了。如果我注释掉该类并将其删除,在它使用的地方,会出现下一个错误,在某处抱怨未知关键字const

如果我通过以下方式手动构建 mainjs.bundle:

react-native bundle --dev false --minify --entry-file ./index.ios.js --platform ios --bundle-output ios/main.jsbundle

我可以在我的设备上安装该应用程序。但是我require()的图片等额外资源没有捆绑。

谁能告诉我,我可以在哪里寻找问题?

【问题讨论】:

    标签: ios node.js xcode react-native ecmascript-6


    【解决方案1】:

    尝试转到node_modules/react-native/packager/react-native-xcode.sh 并注释掉这一行:

    if [[ "$PLATFORM_NAME" = "iphonesimulator" ]]; then     
      echo "Skipping bundling for Simulator platform"       
      exit 0;       
    fi
    

    这是我能够让它工作的唯一方法。

    【讨论】:

    • 谢谢纳达尔。实际上,这不是完整的解决方案,但是您的提示将我带到了那里。 NVM似乎有问题。我没有通过 brew 安装它以使 avn 工作。但是react-native.xcode.sh这里好像有问题,或者我的NVM安装搞砸了。在我重命名 ~/.nvm 后,脚本正确构建了包并干净地包含了所有必需的资源。
    【解决方案2】:

    其他人也有这个问题,这与 Xcode 运行旧版本的节点有关,而不是最新版本。

    TL/DR:添加这一行:

    #nvm
    [[ -s $HOME/.nvm/nvm.sh ]] && . $HOME/.nvm/nvm.sh  # This loads NVM
    

    到我的~/.bash_profile' 并重新启动 Xcode 解决了问题

    .

    加长版: 我的 nvm 安装搞砸了,Xcode 使用的是节点版本v0.12.7

    当我尝试在Xcode Project-->Build Phases--> Bundle React Native code and images 中运行nvm use default 时,我注意到它找不到nvm。 所以将上面的行添加到我的bash_profile 解决了这个问题。

    我在 OSX 上使用 react-native 26

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-30
      • 2022-08-08
      • 2015-11-01
      相关资源
      最近更新 更多