希望这是一个简单的问题,但我在Google搜索中找不到任何内容。在模拟器上运行(具有任何构建类型)均可完美运行。但是,连接具有任何构建类型(调试或发行版)的设备时,在运行时会发生以下问题(该应用可以成功构建):
我的package.json
具有以下部门:
"dependencies": {
"@redux-offline/redux-offline": "2.4.0",
"babel-plugin-transform-remove-console": "6.9.4",
"buffer": "5.2.0",
"crypto-js": "3.1.9-1",
"lodash": "4.17.10",
"react": "16.3.1",
"react-native": "0.54.4",
"react-native-fast-image": "4.0.14",
"react-native-firebase": "4.3.8",
"react-native-fs": "2.10.14",
"react-native-maps": "0.21.0",
"react-native-maps-super-cluster": "1.4.1",
"react-native-navigation": "1.1.471",
"react-native-svg": "6.4.1",
"react-native-tab-view": "1.0.2",
"react-redux": "5.0.7",
"redux": "4.0.0",
"redux-logger": "3.0.6",
"redux-thunk": "2.3.0",
"whatwg-url": "6.5.0"
},
"devDependencies": {
"babel-eslint": "^8.2.3",
"babel-jest": "23.0.1",
"babel-preset-flow": "6.23.0",
"babel-preset-react-native": "4.0.0",
"eslint": "4.19.1",
"eslint-config-airbnb": "16.1.0",
"eslint-plugin-flowtype": "2.49.3",
"eslint-plugin-import": "2.12.0",
"eslint-plugin-jsx-a11y": "6.0.3",
"eslint-plugin-react": "7.9.1",
"flow-bin": "0.65.0",
"husky": "0.14.3",
"jest": "23.1.0",
"lint-staged": "7.1.3",
"prettier": "1.13.4",
"react-native-schemes-manager": "1.0.4",
"react-test-renderer": "16.3.0-alpha.1"
},
我的.babelrc
具有以下内容:
{
"presets": ["react-native", "flow"],
"env": {
"production": {
"plugins": ["transform-remove-console"]
}
}
}
我正在使用react-native-schemes-manager
来构建基本应用程序。这样的配置在package.json
中,如下所示:
"xcodeSchemes": {
"Debug": [
"FakeAppNameDebug"
],
"Release": [
"FakeAppNameRelease"
]
}
这些都没有解释它如何在模拟器上完美地工作,但是想在设备上运行时发脾气。有什么想法吗?
答案 0 :(得分:0)
我遇到了同样的问题,这就是我发现的问题:
RN is executed in two different environments (V8 or JavaScriptCore)中的 JS,具体取决于运行方式。例如。就我而言,无论有没有远程js调试器,该应用程序都可以在iOS模拟器上正常运行;在Android模拟器上,只能在打开远程调试器的情况下工作,并在没有调试器的情况下抛出错误;在真正的Android设备上抛出错误。考虑到JSC comes in two different versions (supplied by iOS or packaged in RN app for Android),我得出的结论是iOS JSC和V8 可以理解target.new
,而Android打包的JSC则不行(顺便说一句,Babel也不行)。 / p>
这就是new.target
失败的原因,具体取决于运行它的位置。
现在此错误的出处:我使用this method来找到隐患,并将其放在whatwg-url
包中的node_modules/whatwg-url/lib/URL.js
中:
return iface.setup(Object.create(new.target.prototype), args);
tl; dr;有几种可能的解决方案:
whatwg-url
。这可能只是暂时的解决方案,因为原始JSC还有很多其他功能(例如,不能简单地转译或填充的代理或符号)。new.target
出现次数更改为new . target
(显然所有引擎都支持),只是检查newTarget
是否为你唯一的问题。就我而言,似乎还不支持代理(我使用的是mobx v5),因此,仅仅删除whatwg-url
并不能解决我的问题。