Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

React-Native run-ios TypeError: undefined is not an object (evaluating 'this.__callReactNativeMicrotasks') #66

Closed
drizzlesconsin opened this issue May 14, 2022 · 5 comments

Comments

@drizzlesconsin
Copy link

错误

TypeError: undefined is not an object (evaluating 'this.__callReactNativeMicrotasks')

请问有没有遇到过这个问题的?

前进一步一个坑,填的差不多了,遇到了这个。

环境

System:
    OS: macOS 12
    CPU: (4) x64 Intel(R)
  Binaries:
    Node: 14.19.2
    Yarn: 1.22.17
    npm: 8.5.5
  Managers:
    CocoaPods: 1.11.3
  SDKs:
    iOS SDK:
      Platforms: DriverKit 21.0.1, iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0
    Android SDK:
      API Levels: 23, 27, 28, 29, 30, 31
      Build Tools: 28.0.3, 29.0.2, 30.0.2, 33.0.0
      Android NDK: Not Found
  IDEs:
    Android Studio: 2021.1
    Xcode: 13
  Languages:
    Java: 1.8.0_211
  npmPackages:
    @react-native-community/cli: Not Found
    react: ^17.0.2 => 17.0.2
    react-native: ^0.67.3 => 0.67.4
    react-native-macos: Not Found
  npmGlobalPackages:
    *react-native*: Not Found

操作步骤

$ taro init testApp # 1.
👽 Taro v3.4.9

# 选择 React + TypeScript + Sass + Github(最新) + react-native
$ yarn upgradePeerdeps # 2. ✅
$ yarn start # 3. ✅
  1. 打包这一步与官方示例显示的结果不一致。没有 transform[stdout]... 的过程,但是又没有报错。
$ yarn build:rn --platform ios

image

  1. 这一步能正常启动模拟器,但是页面空白。
$ yarn ios

5.1 为了能看到错误信息,断掉 bundle server, 再跑 yarn ios,错误如图:

image

5.2 在 Xcode 打开项目,报红:

image

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>
    Error: Unable to resolve module ./index from APP_NAME/.: <br><br>
    None of these files exist:<br> 
    &nbsp;* index(.native|.ios.js|.native.js|.js|.ios.json|.native.json|.json|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx)<br>
    &nbsp;* index/index(.native|.ios.js|.native.js|.js|.ios.json|.native.json|.json|.ios.ts|.native.ts|.ts|.ios.tsx|.native.tsx|.tsx)<br>
    &nbsp; &nbsp;at ModuleResolver.resolveDependency (APP_NAME/node_modules/metro/src/node-haste/DependencyGraph/ModuleResolution.js:107:15)<br>
    &nbsp; &nbsp;at DependencyGraph.resolveDependency (APP_NAME/node_modules/metro/src/node-haste/DependencyGraph.js:288:43)<br>
    &nbsp; &nbsp;at APP_NAME/node_modules/metro/src/lib/transformHelpers.js:129:24<br>
    &nbsp; &nbsp;at Server._resolveRelativePath (APP_NAME/node_modules/metro/src/Server.js:1072:12)<br>
    &nbsp; &nbsp;at async Server.requestProcessor [as _processBundleRequest] (APP_NAME/node_modules/metro/src/Server.js:428:37)<br>
    &nbsp; &nbsp;at async Server._processRequest (APP_NAME/node_modules/metro/src/Server.js:380:9)</pre>
</body>
</html>

补充

  1. 壳子 taro-native-shell没问题,能成功加载显示。
  2. 上面的环境跑 react-native 0.68.x 新建的项目也能正常运行。
  3. iOS 模拟器试过 1514.5
  4. 通过 Taro Playground APP 调试也是空白,无错误信息。按 R 刷新也能看加载进度。

package.json

    {
        "dependencies": {
            "@babel/runtime": "^7.7.7",
            "@react-native-async-storage/async-storage": "~1.15.11",
            "@react-native-community/cameraroll": "~4.1.2",
            "@react-native-community/clipboard": "~1.5.1",
            "@react-native-community/geolocation": "~2.0.2",
            "@react-native-community/netinfo": "~7.1.2",
            "@react-native-community/slider": "~4.1.12",
            "@react-native-masked-view/masked-view": "~0.2.6",
            "@react-native-picker/picker": "~2.2.1",
            "@tarojs/components": "3.4.9",
            "@tarojs/plugin-framework-react": "3.4.9",
            "@tarojs/react": "3.4.9",
            "@tarojs/runtime": "3.4.9",
            "@tarojs/taro": "3.4.9",
            "@tarojs/taro-rn": "3.4.9",
            "expo-av": "~9.2.3",
            "expo-barcode-scanner": "~10.2.2",
            "expo-brightness": "~9.2.2",
            "expo-camera": "~11.2.2",
            "expo-file-system": "~11.1.3",
            "expo-image-picker": "~10.2.3",
            "expo-keep-awake": "~9.2.0",
            "expo-permissions": "~12.1.1",
            "expo-sensors": "~10.2.2",
            "react": "^17.0.2",
            "react-dom": "^17.0.2",
            "react-native": "^0.67.3",
            "react-native-device-info": "~8.4.8",
            "react-native-gesture-handler": "~1.10.3",
            "react-native-image-resizer": "~1.4.5",
            "react-native-pager-view": "~5.4.9",
            "react-native-safe-area-context": "~3.4.1",
            "react-native-screens": "^3.12.0",
            "react-native-svg": "~12.1.1",
            "react-native-syan-image-picker": "0.5.3",
            "react-native-unimodules": "~0.14.10",
            "react-native-webview": "~11.14.3"
        },
        "devDependencies": {
            "@babel/core": "^7.8.0",
            "@tarojs/cli": "3.4.9",
            "@tarojs/mini-runner": "3.4.9",
            "@tarojs/rn-runner": "3.4.9",
            "@tarojs/webpack-runner": "3.4.9",
            "@types/react": "^17.0.2",
            "@types/react-native": "^0.67.0",
            "@types/webpack-env": "^1.13.6",
            "@typescript-eslint/eslint-plugin": "^5.20.0",
            "@typescript-eslint/parser": "^5.20.0",
            "babel-preset-taro": "3.4.9",
            "eslint": "^8.12.0",
            "eslint-config-taro": "3.4.9",
            "eslint-plugin-import": "^2.12.0",
            "eslint-plugin-react": "^7.8.2",
            "eslint-plugin-react-hooks": "^4.2.0",
            "install-peerdeps": "^3.0.3",
            "pod-install": "^0.1.23",
            "stylelint": "9.3.0",
            "typescript": "^4.1.0"
        }
    }
    
@zhiqingchen 大佬有空帮看下呗.
@zhiqingchen
Copy link
Member

NervJS/taro#11760

@drizzlesconsin
Copy link
Author

5.1 根据上面的方法,能解决。

5.2 中的问题未能解决。通过 Xcode 打开 ios/xx.xcworkspace build 失败。错误如上

@zhiqingchen
Copy link
Member

zhiqingchen commented May 16, 2022

  1. 避免缓存影响
yarn dev:rn --reset-cache
  1. 检测metro server是否正常运行

http://127.0.0.1:8081/index.bundle?platform=ios&dev=true

  1. xcode如果也启动了metro server,需要kill,使用1方法进行启动

@drizzlesconsin
Copy link
Author

drizzlesconsin commented May 16, 2022

@zhiqingchen 感谢解答。🎉

原来 Xcode Clean Build Folder 没用,还需要清掉 Metro 打包的缓存。
手动调用打包 js bundle,再通过 Xcode Run,完美运行。

---UPDATED---
试了一下,似乎只能先手动启动 yarn dev:rn, 再用 Xcode Run 才能正常运行。Xcode 自动打开的就会有这个问题。

@zhiqingchen
Copy link
Member

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants