expo icon indicating copy to clipboard operation
expo copied to clipboard

Expo Router is not compatible with ESLint + Bun (`Error: Cannot find module 'ajv/dist/compile/codegen'`)

Open amanape opened this issue 1 year ago • 0 comments

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:

  1. Installing ESLint with bunx/npx expo lint
  2. 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

amanape avatar May 26 '24 18:05 amanape