expo / expo-electron-adapter

This package wraps `electron-webpack` and adds support for Expo web and other universal React packages.
MIT License
28 stars 11 forks source link

[Electron] @expo/electron-adapter doesn't support Webpack v5 #4

Open RonAmihai opened 3 years ago

RonAmihai commented 3 years ago

Description

@expo/electron-adapter uses Webpack v4 configuration options which were dropped/removed since v5. Hence expo-electron doesn't support webpack v5 right now.

Expected Behavior

Application using webpack v5 should run with @expo/electron-adapter, using expo-electron start command

Observed Behavior

After running expo-electron start, the following error appears:

┏ Renderer -------------------

  × 「wds」: Invalid configuration object. Webpack has been initialized using a configuration object that does not match the API schema.        
   - configuration.optimization has an unknown property 'namedModules'. These properties are valid:
     object { checkWasmTypes?, chunkIds?, concatenateModules?, emitOnErrors?, flagIncludedChunks?, innerGraph?, mangleExports?, mangleWasmImports?, mergeDuplicateChunks?, minimize?, minimizer?, moduleIds?, noEmitOnErrors?, nodeEnv?, portableRecords?, providedExports?, realContentHash?, removeAvailableModules?, removeEmptyChunks?, runtimeChunk?, sideEffects?, splitChunks?, usedExports? }
     -> Enables/Disables integrated optimizations.
     Did you mean optimization.moduleIds: "named" (BREAKING CHANGE since webpack 5)?

┗ ----------------------------
Renderer WDS exited with code 1
Error: Renderer WDS exited with code 1
    at ChildProcess.<anonymous> (D:\Projects\Application\node_modules\electron-webpack\src\dev\ChildProcessManager.ts:62:32)
    at ChildProcess.emit (events.js:314:20)
    at maybeClose (internal/child_process.js:1047:16)
    at Socket.<anonymous> (internal/child_process.js:438:11)
    at Socket.emit (events.js:314:20)
    at Pipe.<anonymous> (net.js:672:12)

It seems like @expo/electron-adapter's webpack configuration is using optimization.namedModules: true option, which is deprecated since v5 & replaced with the optimization.moduleIds: 'named' option.

Environment

  Expo CLI 3.27.14 environment info:
    System:
      OS: Windows 10 10.0.19041
    Binaries:
      Node: 14.13.1 - C:\Program Files\nodejs\node.EXE
      Yarn: 1.22.10 - ~\AppData\Roaming\npm\yarn.CMD  
      npm: 6.14.8 - C:\Program Files\nodejs\npm.CMD   
    npmPackages:
      expo: ~39.0.3 => 39.0.3 
      react: ~16.13.1 => 16.13.1 
      react-dom: ~16.13.1 => 16.13.1 
      react-native: ^0.63.3 => 0.63.3 
      react-native-web: ~0.14.0 => 0.14.0 
    Expo Workflow: managed

Reproducible Demo

EvanBacon commented 3 years ago

create-react-app, and Expo web both don't support v5 https://github.com/expo/expo-cli/issues/2881