sdk 33 Error: Unable to resolve module `./node_modules/expo/AppEntry`

Upgrading to SDK33 for the 64 bit architecture support as this app is only being deployed on Android.

Upon upgrading i have followed the documentation to change the imports and even added some custom definitions to get around some documented camera issues.

Now i cannot run the project on the emulator.

I have so far removed node_modules and re-installed, removed the app from the emulator and run expo-start -c

Have also tried to clear metro packager and anything else i can find online.

nothing is getting away from the issue and now the project doesn’t run. I wouldn’t mind so much and just downgrade to continue progress but this sdk version is necessary as per previous comment.

Environment Variables:

 Expo CLI 2.20.11 environment info:
    System:
      OS: Windows 10
    Binaries:
      Yarn: 1.7.0 - ~\AppData\Roaming\npm\yarn.CMD
      npm: 6.9.0 - C:\Program Files\nodejs\npm.CMD
    IDEs:
      Android Studio: Version  3.4.0.0 AI-183.6156.11.34.5522156

Also for interest here is the app.json:

{
  "expo": {
    "sdkVersion": "33.0.0",
    "platforms": ["ios", "android"],
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
    	"image": "./assets/splash.png",
    	"resizeMode": "contain",
    	"backgroundColor": "#ffffff"
    },
    "updates": {
    	"fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": ["**/*"],
    "ios": {
    	"supportsTablet": true
    },
    "android": {
		"permissions": []
    },
    "packagerOpts": {
		"sourceExts": ["ts", "tsx"],
		"transformer": "node_modules/react-native-typescript-transformer/index.js"
    }
  }
}

And here is the package.json:

{
	"scripts": {
		"start": "expo start",
		"start-server": "ts-node lib/development.ts",
		"android": "expo start --android",
		"ios": "expo start --ios",
		"eject": "expo eject",
		"postinstall": "npm run copy-base64-types && npm run copy-expo-types",
		"copy-base64-types": "cp base64-img.d.ts node_modules/base64-img",
		"copy-expo-types": "cp ImagePicker.types.d.ts node_modules/expo-image-picker/build"
	},
	"main": "node_modules/expo/AppEntry.js",
	"server": {
		"host": "localhost",
		"port": 3002
	},
	"dependencies": {
		"@computech-it/socket-api": "^3.3.5",
		"@computech-it/socket-middleware": "^1.0.5",
		"@expo/vector-icons": "^10.0.1",
		"base64-img": "^1.0.4",
		"expo": "^33.0.0",
		"expo-camera": "^5.0.1",
		"expo-file-system": "^5.0.1",
		"expo-image-picker": "^5.0.2",
		"expo-permissions": "^5.0.1",
		"express": "^4.16.4",
		"ldapjs": "^1.0.2",
		"moment": "^2.24.0",
		"mysql": "^2.17.1",
		"react": "16.8.3",
		"react-moment": "^0.8.4",
		"react-native": "https://github.com/expo/react-native/archive/sdk-33.0.0.tar.gz",
		"react-navigation": "^3.11.0",
		"react-redux": "^6.0.1",
		"recompose": "^0.30.0",
		"redux": "3.7.2",
		"reflect-metadata": "^0.1.13",
		"typeorm": "^0.2.17",
		"typescript-redux": "0.0.6"
	},
	"devDependencies": {
		"@types/express": "^4.16.1",
		"@types/ldapjs": "0.0.0",
		"@types/node": "^11.13.0",
		"@types/react-native": "^0.57.63",
		"@types/react-redux": "^7.0.6",
		"@types/recompose": "^0.30.5",
		"babel-preset-expo": "^5.0.0",
		"fork-ts-checker-webpack-plugin": "^1.0.1",
		"react-native-typescript-transformer": "^1.2.12",
		"reactotron-react-native": "^3.2.1",
		"reactotron-redux": "^3.1.0",
		"ts-node": "^8.1.0",
		"typescript": "^3.4.1",
		"webpack": "^4.29.6",
		"webpack-cli": "^3.3.0",
		"webpack-dev-middleware": "^3.6.2",
		"webpack-hot-middleware": "^2.24.3"
	}
}

Hey @andy4ward,

Can you try running rm -rf .expo and see if that helps at all?

Cheers,
Adam

Hi @adamjnav unfortunately that has not made any difference.

Still getting the following error:

Error: Unable to resolve module `./node_modules/expo/AppEntry` from `<directory>`: The module `./node_modules/expo/AppEntry` could not be found from `<directory>`. Indeed, none of these files exist:
  * `<directory>\node_modules\expo\AppEntry(.native||.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.json|.native.json|.json)`
  * `<directory>\node_modules\expo\AppEntry\index(.native||.android.ts|.native.ts|.ts|.android.tsx|.native.tsx|.tsx|.android.json|.native.json|.json)`
    at ModuleResolver.resolveDependency (<directory>\node_modules\metro\src\node-haste\DependencyGraph\ModuleResolution.js:163:15)
    at ResolutionRequest.resolveDependency (<directory>\node_modules\metro\src\node-haste\DependencyGraph\ResolutionRequest.js:52:18)
    at DependencyGraph.resolveDependency (<directory>\node_modules\metro\src\node-haste\DependencyGraph.js:283:16)
    at <directory>\node_modules\metro\src\lib\transformHelpers.js:261:42
    at Server.<anonymous> (<directory>\node_modules\metro\src\Server.js:1038:41)
    at Generator.next (<anonymous>)
    at asyncGeneratorStep (<directory>\node_modules\metro\src\Server.js:99:24)
    at _next (<directory>\node_modules\metro\src\Server.js:119:9)
    at process._tickCallback (internal/process/next_tick.js:68:7)
1 Like

I am getting the same error after upgrading from sdk 32.

That’s exactly what i was attempting as well. An upgrade from sdk 32

For me, this post solved it.

The problem was for me that in the app.json the packagerOpts.sourceExts were missing the js.

sourceExts: ["ts","tsx"] => sourceExts: ["ts","tsx", "js"]

I think something happend in sdk33 and it is no longer falls back to js when the sourceExts is defined.

2 Likes

Thanks for this it solved my issue.

On reflection it seems obvious as sdk 33 included the base typescript support and the typescript templating options so if sourceExts are defined and not including “js” it would fail.

Glad you got to the bottom of it. I’ll make a note about this internally and add it to upgrade instructions.

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.