一直在研究通过create-react-native-app
生成的项目。已经成功使用该项目一段时间,但是现在尝试通过exp start --tunnel
测试该应用程序,突然发现以下格式的错误(尽管以前可以正常工作):
[22:08:19] /path/to/node_modules/react-native-scripts/build/bin/crna-entry.js: Plugin/Preset files are not allowed to export objects, only functions. In /path/to/node_modules/babel-preset-expo/index.js
[22:08:19] Failed building JavaScript bundle.
已经看到一些似乎解决了该问题的帖子(https://github.com/babel/babel/issues/6808和Babel Plugin/Preset files are not allowed to export objects, only functions),但是对于任何事情都是全新的,并且不能完全理解bable
是什么,因此很难理解如何将这些帖子应用于我自己的情况。
我的.bablerc文件(在其他帖子中似乎与之相关)是:
{
"presets": ["babel-preset-expo"],
"env": {
"development": {
"plugins": ["transform-react-jsx-source"]
}
}
}
尝试了npm cache clean --force && rm -rf node_modules && rm -f package-lock.json && npm install
,没有任何更改。 似乎有帮助的是将react-native@0.56降级为0.55 (如此处支持:Create React Native App. - Plugin/Preset files are not allowed to export objects, only functions),但这似乎并不能直接解决问题,更多的是解决方法。对于在此处应执行的操作的任何建议将不胜感激(应该包括任何其他文件来帮助调试吗?)。
**针对此问题被标记为Create React Native App. - Plugin/Preset files are not allowed to export objects, only functions的可能重复项,
答案 0 :(得分:18)
发现问题是这样的:
在某个时候,必须完成npm update
并将react-native更新为0.56,并将expo更新为28.0.0。
查看react-native文档(https://facebook.github.io/react-native/docs/upgrading.html#create-react-native-app-projects),react-native似乎需要安装以下版本的react-native
,react
和expo
都相互兼容。可以在以下位置找到各个包彼此兼容的版本的矩阵:https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md并说
这些依赖项的每个版本仅与其他两个版本的狭窄版本范围兼容。
截至本文撰写时该文档的最新更新时间为2018年4月27日,因此尚不清楚应使用哪种版本的react和expo(最近发布的版本为28.0.0)结合现已推出的react-native@0.56。 记录的最新react-native版本是react-native@0.55(与react@16.3.1和expo@27.0.0一起使用),我认为这就是为什么降级为在这种情况下,react-native@0.55很有帮助(我不知道为什么矩阵中没有关于react-native@0.56的文档),我的package.json现在看起来像:
...
"dependencies": {
"@expo/vector-icons": "^6.3.1",
"eslint": "^4.19.1",
"expo": "^27.1.0",
"prop-types": "^15.6.2",
"react": "16.3.1",
"react-native": "^0.55.4",
"react-native-mail": "^3.0.6",
"react-native-modal-dropdown": "^0.6.2",
"react-navigation": "^2.6.2",
"react-redux": "^5.0.7",
"redux": "^4.0.0",
"tcomb-form-native": "^0.6.14",
"uuid": "^3.3.2"
}
}
答案 1 :(得分:9)
今天我也发生了同样的问题。显然,react-native已升级到0.56.0。 将本机版本降级到0.55.0解决了我的问题
npm install react-native@0.55.0
答案 2 :(得分:1)
原因已由@lampShadesDrifter进行了充分说明,但是我将添加一个更快的解决方案,即使用expo中捆绑的react-native sdk: https://github.com/expo/react-native/
因此您可以将其与expo sdk 29的依赖项添加到一起:
"react-native": "https://github.com/expo/react-native/archive/sdk-29.0.0.tar.gz",