expo
expo copied to clipboard
Expo Router is not compatible with ESLint + Bun (`Error: Cannot find module 'ajv/dist/compile/codegen'`)
Minimal reproducible example
https://github.com/amanape/expo-router-eslint-bun-bug
Which package manager are you using? (Yarn is recommended)
bun
If the issue is web-related, please select the bundler (web.bundler in the app.json)
None
Summary
Given this combination of packages:
- Installing ESLint with
bunx/npx expo lint - Installing Expo Router by following the official reference
And attempting to start the development environment with Bun (bun start), the error is thrown in the console. Here is the full error:
> bun start
$ expo start
Starting project at /Users/.../error
Error: Cannot find module 'ajv/dist/compile/codegen'
Require stack:
- /Users/.../error/node_modules/ajv-keywords/dist/definitions/typeof.js
- /Users/.../error/node_modules/ajv-keywords/dist/keywords/typeof.js
- /Users/.../error/node_modules/ajv-keywords/dist/keywords/index.js
- /Users/.../error/node_modules/ajv-keywords/dist/index.js
- /Users/.../error/node_modules/schema-utils/dist/validate.js
- /Users/.../error/node_modules/schema-utils/dist/index.js
- /Users/.../error/node_modules/expo-router/plugin/build/index.js
- /Users/.../error/node_modules/expo-router/app.plugin.js
- /Users/.../error/node_modules/@expo/config-plugins/build/utils/plugin-resolver.js
- /Users/.../error/node_modules/@expo/config-plugins/build/plugins/withStaticPlugin.js
- /Users/.../error/node_modules/@expo/config-plugins/build/plugins/withPlugins.js
- /Users/.../error/node_modules/@expo/config-plugins/build/index.js
- /Users/.../error/node_modules/@expo/config/build/plugins/withConfigPlugins.js
- /Users/.../error/node_modules/@expo/config/build/Config.js
- /Users/.../error/node_modules/@expo/config/build/index.js
- /Users/.../error/node_modules/@expo/cli/build/src/utils/analytics/getDevClientProperties.js
- /Users/.../error/node_modules/@expo/cli/build/src/start/resolveOptions.js
- /Users/.../error/node_modules/@expo/cli/build/src/start/index.js
- /Users/.../error/node_modules/@expo/cli/build/bin/cli
- /Users/.../error/node_modules/expo/bin/cli
Error: Cannot find module 'ajv/dist/compile/codegen'
Require stack:
- /Users/.../error/node_modules/ajv-keywords/dist/definitions/typeof.js
- /Users/.../error/node_modules/ajv-keywords/dist/keywords/typeof.js
- /Users/.../error/node_modules/ajv-keywords/dist/keywords/index.js
- /Users/.../error/node_modules/ajv-keywords/dist/index.js
- /Users/.../error/node_modules/schema-utils/dist/validate.js
- /Users/.../error/node_modules/schema-utils/dist/index.js
- /Users/.../error/node_modules/expo-router/plugin/build/index.js
- /Users/.../error/node_modules/expo-router/app.plugin.js
- /Users/.../error/node_modules/@expo/config-plugins/build/utils/plugin-resolver.js
- /Users/.../error/node_modules/@expo/config-plugins/build/plugins/withStaticPlugin.js
- /Users/.../error/node_modules/@expo/config-plugins/build/plugins/withPlugins.js
- /Users/.../error/node_modules/@expo/config-plugins/build/index.js
- /Users/.../error/node_modules/@expo/config/build/plugins/withConfigPlugins.js
- /Users/.../error/node_modules/@expo/config/build/Config.js
- /Users/.../error/node_modules/@expo/config/build/index.js
- /Users/.../error/node_modules/@expo/cli/build/src/utils/analytics/getDevClientProperties.js
- /Users/.../error/node_modules/@expo/cli/build/src/start/resolveOptions.js
- /Users/.../error/node_modules/@expo/cli/build/src/start/index.js
- /Users/.../error/node_modules/@expo/cli/build/bin/cli
- /Users/.../error/node_modules/expo/bin/cli
at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
at Module._load (node:internal/modules/cjs/loader:985:27)
at Module.require (node:internal/modules/cjs/loader:1235:19)
at require (node:internal/modules/helpers:176:18)
at Object.<anonymous> (/Users/.../error/node_modules/ajv-keywords/dist/definitions/typeof.js:3:19)
at Module._compile (node:internal/modules/cjs/loader:1376:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at Module.require (node:internal/modules/cjs/loader:1235:19)
error: script "start" exited with code 1
Interestingly, attempting to run npx/bunx expo-doctor throws the same error:
> bunx expo-doctor
node:internal/modules/cjs/loader:1144
const err = new Error(message);
^
Error: Cannot find module 'ajv/dist/compile/codegen'
Require stack:
- /Users/.../error/node_modules/ajv-keywords/dist/definitions/typeof.js
- /Users/.../error/node_modules/ajv-keywords/dist/keywords/typeof.js
- /Users/.../error/node_modules/ajv-keywords/dist/keywords/index.js
- /Users/.../error/node_modules/ajv-keywords/dist/index.js
- /Users/.../error/node_modules/schema-utils/dist/validate.js
- /Users/.../error/node_modules/schema-utils/dist/index.js
- /Users/.../error/node_modules/expo-router/plugin/build/index.js
- /Users/.../error/node_modules/expo-router/app.plugin.js
- /private/tmp/bunx-501-expo-doctor@latest/node_modules/expo-doctor/build/index.js
at Module._resolveFilename (node:internal/modules/cjs/loader:1144:15)
at Module._load (node:internal/modules/cjs/loader:985:27)
at Module.require (node:internal/modules/cjs/loader:1235:19)
at require (node:internal/modules/helpers:176:18)
at Object.<anonymous> (/Users/.../error/node_modules/ajv-keywords/dist/definitions/typeof.js:3:19)
at Module._compile (node:internal/modules/cjs/loader:1376:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
at Module.load (node:internal/modules/cjs/loader:1207:32)
at Module._load (node:internal/modules/cjs/loader:1023:12)
at Module.require (node:internal/modules/cjs/loader:1235:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/Users/.../error/node_modules/ajv-keywords/dist/definitions/typeof.js',
'/Users/.../error/node_modules/ajv-keywords/dist/keywords/typeof.js',
'/Users/.../error/node_modules/ajv-keywords/dist/keywords/index.js',
'/Users/.../error/node_modules/ajv-keywords/dist/index.js',
'/Users/.../error/node_modules/schema-utils/dist/validate.js',
'/Users/.../error/node_modules/schema-utils/dist/index.js',
'/Users/.../error/node_modules/expo-router/plugin/build/index.js',
'/Users/.../error/node_modules/expo-router/app.plugin.js',
'/private/tmp/bunx-501-expo-doctor@latest/node_modules/expo-doctor/build/index.js'
]
}
Node.js v20.11.0
Abandoning Bun and reinstalling dependencies with npm works fine.
Environment
expo-env-info 1.2.0 environment info:
System:
OS: macOS 14.5
Shell: 5.9 - /bin/zsh
Binaries:
Node: 20.11.0 - /usr/local/bin/node
Yarn: 1.22.17 - /opt/homebrew/bin/yarn
npm: 10.3.0 - /opt/homebrew/bin/npm
SDKs:
iOS SDK:
Platforms: DriverKit 23.5, iOS 17.5, macOS 14.5, tvOS 17.5, visionOS 1.2, watchOS 10.5
IDEs:
Android Studio: 2023.1 AI-231.9392.1.2311.11330709
Xcode: 15.4/15F31d - /usr/bin/xcodebuild
npmPackages:
expo: ~51.0.8 => 51.0.8
expo-router: ~3.5.14 => 3.5.14
react: 18.2.0 => 18.2.0
react-native: 0.74.1 => 0.74.1
npmGlobalPackages:
eas-cli: 9.0.8
expo-cli: 6.3.10
Expo Workflow: managed