【问题标题】:Create React Native App. - Plugin/Preset files are not allowed to export objects, only functions创建 React Native 应用程序。 - 插件/预设文件不允许导出对象,只有功能
【发布时间】:2018-12-15 01:45:35
【问题描述】:

需要帮助,我在左侧字段中遇到了一个我无法调试的奇怪错误。直到昨天我在另一台 Mac 上设置了我的 react native 项目后,这个项目才成功捆绑。

我想知道它是否来自我必须重新安装的 npm 包的版本控制。

任何方向都会有所帮助,最难的总是设置,因为你很少这样做......

我的babelrc文件如下--

{
    "presets": ["babel-preset-expo"],
    "env": {
        "development": {
            "plugins": ["transform-react-jsx-source"]
        }
    }
}

还有我的 package.json

{
  "name": "hancho_frontend",
  "version": "0.1.0",
  "private": true,
  "devDependencies": {
    "jest-expo": "~27.0.0",
    "react-native-scripts": "^1.14.1",
    "react-test-renderer": "16.3.1"
  },
  "main": "./node_modules/react-native-scripts/build/bin/crna-entry.js",
  "scripts": {
    "start": "react-native-scripts start",
    "eject": "react-native-scripts eject",
    "android": "react-native-scripts android",
    "ios": "react-native-scripts ios",
    "test": "jest"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "@expo/vector-icons": "^6.2.0",
    "axios": "^0.18.0",
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-react": "^6.24.1",
    "babel-upgrade": "0.0.19",
    "color": "^2.0.0",
    "expo": "^27.1.0",
    "hoist-non-react-statics": "^2.3.0",
    "moment": "^2.22.2",
    "prop-types": "^15.6.2",
    "react": "^16.3.1",
    "react-dom": "^16.4.1",
    "react-fontawesome": "^1.6.1",
    "react-native": "^0.56.0",
    "react-native-dropdownalert": "^3.1.2",
    "react-native-extended-stylesheet": "^0.8.0",
    "react-navigation": "^2.6.1",
    "react-redux": "^5.0.7",
    "react-router-dom": "^4.3.1",
    "redux": "^4.0.0",
    "redux-axios-middleware": "^4.0.0",
    "redux-logger": "^3.0.6",
    "redux-thunk": "^2.3.0",
    "webpack": "^4.15.1"
  }
}

我肯定安装了我没有使用的软件包,但它在过去没有造成问题。

我已经清除了缓存,卸载并重新安装了 node_modules。我还恢复到我之前工作过的早期版本的博览会。仍然没有运气。

提前致谢!

【问题讨论】:

  • 我能够通过降级 react-native、webpack 和 react-navigation 的版本来捆绑它,我可能应该单独完成以找到问题的根源。如果有人能阐明如何设置这些文件以使用最新版本,那就太好了。我会更多地挖掘。
  • 遇到了类似的问题,也做了一些谷歌搜索(你可以在这里看到我的完整答案:stackoverflow.com/a/51258114/8236733)。基本上,它似乎不像react-native@0.56、reactexpo的版本,需要一起工作的已经正式制定出来了(所以坚持使用react-native@ 0.55 是目前的 解决方法)。不过,需要在 GitHub (github.com/react-community/create-react-native-app) 上打开一个问题以进行确认。
  • 你能发布完整的错误信息吗?我怀疑这与create-react-native-app#717有关。

标签: react-native babeljs babel-loader create-react-native-app


【解决方案1】:

我尝试将 react-native 从 0.55.2 升级到 0.53.0 并遇到此错误。我没有尝试追踪它,但将 react-native 降级到 0.55 应该可以解决它。

【讨论】:

  • 谢谢,这也为我解决了问题。我暂时搁置它,但一旦发现问题,我会深入挖掘并报告。
【解决方案2】:

create-react-native-app 使用 Expo,从当前版本 (SDK v29) 开始不支持 React Native 0.56。它的release announcement 解释了原因:

我们没有为这个版本更新到 React Native 0.56.0 有两个原因。首先,最值得注意的是,在 React Native 0.56.0 中,babel 从 ^6.24.1 更新为 7.0.0-beta.47。以前的 babel 更新经验告诉我们,对于只想发布应用程序并尽量减少基础架构崩溃所花费时间的开发人员来说,它们可能会令人沮丧和耗时,因此我们希望给它更多的时间来稳定。

其次,0.56.0 引入了一些错误,并且没有包含足够的有用功能和修复超过 0.55.4 来证明更新 babel 的权衡。

如果你真的想使用RN 0.56,并且不需要使用Expo,你可以通过在项目中运行npm run eject来移除依赖。加载您的应用程序时,您仍然会收到类似的错误消息,但由于在您弹出时引入了不同的依赖项。要解决这个问题,请安装 babel-preset-react-native@5 并在项目的 .babelrc 文件中将“babel-preset-react-native-stage-0/decorator-support”替换为“babel-preset-react-native”。 (请注意,运行完弹出命令后 .babelrc 看起来会有所不同。)

【讨论】:

    【解决方案3】:

    我的应用程序被弹出,fagerbua 的回答有所帮助,但我不得不进一步努力让它工作。我最终启动了一个新的 create-react-native-app,弹出并编辑了我的 package.json.babelrc 以使用 babel-preset-react-nativereact-native 的 0.56.0 版本和 @987654325 的 16.4.1 版本@。我还必须从.babelrc 文件中删除transform-react-jsx-source 插件。以下是用于最小工作 react-native@0.56.0 应用程序的文件:

    .babelrc 文件:

    {
      "presets": [
        "babel-preset-react-native"
      ]
    }
    

    package.json:

    {
      "name": "myapp",
      "version": "0.1.0",
      "private": true,
      "devDependencies": {
        "babel-preset-react-native": "^5",
        "jest": "^23.4.2",
        "jest-react-native": "^18.0.0",
        "react-test-renderer": "16.3.1"
      },
      "scripts": {
        "start": "react-native start",
        "android": "react-native run-android",
        "ios": "react-native run-ios",
        "test": "jest"
      },
      "jest": {
        "preset": "react-native"
      },
      "dependencies": {
        "react": "^16.4.1",
        "react-native": "^0.56.0"
      }
    }
    

    一旦我使用基本应用程序进行了这项工作,我将这些更改复制回我的主应用程序,删除了我的 node_modules 文件夹,删除了 npm install 并且一切正常。我不确定是否需要更新的 jest 版本,我不使用 jest,但它是在创建时自动添加的。

    【讨论】:

      【解决方案4】:

      作为@fagerbua 答案的补充。如果你想使用 react-native@0.56 你需要改变.babelrc { "presets": [ "react-native" ] } 你不再需要jest-react-native,但你需要使用babel-preset-react-native@5

      【讨论】:

        猜你喜欢
        • 2018-12-19
        • 1970-01-01
        • 2019-02-08
        • 2020-02-28
        • 2020-03-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多