2017年9月28日木曜日

expoでnpm関連をアップデートしたときにModule JSTimersExecution is not a registered callable moduleと出てきたときの対処的なお話

  • このエントリーをはてなブックマークに追加

Module JSTimersExecution is not a registered callable moduleというエラーが出てきてしまったとき。
expoを使っていてこれが出るときは大体npm updateをしたときだったりとかする。
なので今日はそれの原因的なお話をば。

こんなやつ。
react-nativeのバージョンだとかexpoのバージョンだとかをアップデートしたときにこれが出てきた。
なんか公式見てもはっきりしないんだけど、安定する組み合わせがあるだかないだか。
で、これを安定させるには以下の手順でやってみるとよい的な。

1.expo XDEから適当に新規プロジェクト作成
2.その作成されたプロジェクトのpackage.jsonからexpoとreactとreact-nativeのバージョンをコピー
3.app.jsonのsdkVersionをコピー
4.コピーしたものにそれぞれ変更する

{
  "name": "my-new-project",
  "version": "0.0.0",
  "description": "Hello Expo!",
  "author": null,
  "license": "",
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "test": "node ./node_modules/jest/bin/jest.js --watch"
  },
  "jest": {
    "preset": "jest-expo"
  },
  "dependencies": {
    "@expo/samples": "^2.0.2",
    "expo": "^21.0.0",
    "react": "16.0.0-alpha.12",
    "react-native": "https://github.com/expo/react-native/archive/sdk-21.0.2.tar.gz",
    "react-navigation": "^1.0.0-beta.12"
  },
  "devDependencies": {
    "jest-expo": "^21.0.0"
  }
}
{
  "expo": {
    "name": "my-new-project",
    "description": "No description",
    "slug": "my-new-project",
    "privacy": "public",
    "sdkVersion": "21.0.0",
    "version": "1.0.0",
    "orientation": "portrait",
    "primaryColor": "#cccccc",
    "icon": "./assets/icons/app-icon.png",
    "notification": {
      "icon": "./assets/icons/notification-icon.png",
      "color": "#000000"
    },
    "loading": {
      "icon": "./assets/icons/loading-icon.png"
    },
    "packagerOpts": {
      "assetExts": ["ttf"]
    },
    "ios": {
      "bundleIdentifier": "com.sk3vy.new-project-template",
      "supportsTablet": true
    }
  }
}

ってな感じでやってあげたら無事に動くようになった。
react関連は二週間に一回とかでアップデートされるからよくアップデートをする必要があるわけで。
毎回こうなるのは面倒なんだけどまぁしょうがないのかなんなのか的なみたいな。

Adsense