创建React Native App -不允许插件/预设文件导出对象,仅导出功能

时间:2018-07-06 12:32:22

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

需要一些帮助,我从左侧字段中收到一个奇怪的错误,我无法调试。在另一个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。我还恢复了以前工作过的EXPO的早期版本。仍然没有运气。

谢谢!

4 个答案:

答案 0 :(得分:6)

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看起来会有所不同。)

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我的应用被弹出,而fagerbua的答案有所帮助,但我不得不进一步努力才能使其正常工作。我最终启动了一个全新的create-react-native-app,弹出并编辑了package.json.babelrc以使用babel-preset-react-nativereact-native的0.56.0版本),以及react的16.4.1版本。我还必须从transform-react-jsx-source文件中删除.babelrc插件。以下是用于最低限度的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,一切都正常了。我不确定是否需要更新的玩笑版本,我不使用玩笑,但是它是在创建时自动添加的。

答案 3 :(得分:1)

除了@fagerbua答案。如果要使用react-native@0.56,则需要更改.babelrc { "presets": [ "react-native" ] } 您不再需要jest-react-native,但是您需要使用babel-preset-react-native@5