'HTTPMethod' has not been declared

Target : esp32

I made the latest update of platformio (3.2.0 when writing these lines) and a project that was compiling perfectly suddenly fail each time. Yesterday, before the update it worked like a charm.

I clean project, remove all libraries and same error.

I got systematically the same error in different projects :

error: ‘HTTPMethod’ has not been declared

The error in the stack in my code is located in “#include <WebServer.h>” line.

I tried to go back to the last version but it still doesn’t work. Any idea ?

Here is the full log

 *  Executing task: C:\Users\nicol\.platformio\penv\Scripts\platformio.exe run --environment USB 

Processing USB (platform: espressif32; board: wt32-eth01; framework: arduino)
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option

CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/wt32-eth01.html
PLATFORM: Espressif 32 (6.3.0) > Wireless-Tag WT32-ETH01 Ethernet Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 @ 3.20009.0 (2.0.9)
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 35 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ArduinoJson @ 6.21.2
|-- WiFiManager @ 2.0.16-rc.2+sha.9b8de0d
|-- ArduinoOTA @ 2.0.0
|-- ESPmDNS @ 2.0.0
|-- SPIFFS @ 2.0.0
|-- WebServer @ 2.0.0
|-- WiFi @ 2.0.0
Building in release mode
Compiling .pio\build\USB\src\HttpServer.cpp.o
Compiling .pio\build\USB\src\NetworkManager.cpp.o
Archiving .pio\build\USB\lib9e8\libWiFi.a
Compiling .pio\build\USB\libaf2\ESPmDNS\ESPmDNS.cpp.o
Compiling .pio\build\USB\lib477\Update\HttpsOTAUpdate.cpp.o
Compiling .pio\build\USB\lib477\Update\Updater.cpp.o
Compiling .pio\build\USB\lib828\FS\FS.cpp.o
Compiling .pio\build\USB\lib828\FS\vfs_api.cpp.o
Compiling .pio\build\USB\lib8ab\WebServer\Parsing.cpp.o
In file included from C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:63,
                 from src/HttpServer.h:3,
                 from src/HttpServer.cpp:6:
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/detail/RequestHandler.h:10:28: error: 'HTTPMethod' has not been declared
     virtual bool canHandle(HTTPMethod method, String uri) { (void) method; (void) uri; return false; }
                            ^~~~~~~~~~
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/detail/RequestHandler.h:12:44: error: 'HTTPMethod' has not been declared
     virtual bool handle(WebServer& server, HTTPMethod requestMethod, String requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; }
                                            ^~~~~~~~~~

I made another test to bring clues,
I created a platformio project and copy / paste the code from WT32-ETH01-LAN-8720-RJ45-/WT32-ETH01-wired-webserver-dhcp.ino at main · ldijkman/WT32-ETH01-LAN-8720-RJ45- · GitHub

And click on “compile”. I got the same error :

 *  Executing task: C:\Users\nicol\.platformio\penv\Scripts\platformio.exe run 

Processing wt32-eth01 (platform: espressif32; board: wt32-eth01; framework: arduino)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/wt32-eth01.html
PLATFORM: Espressif 32 (6.3.0) > Wireless-Tag WT32-ETH01 Ethernet Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-arduinoespressif32 @ 3.20009.0 (2.0.9) 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 33 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Ethernet @ 2.0.0
|-- WebServer @ 2.0.0
|-- WiFi @ 2.0.0
Building in release mode
Compiling .pio\build\wt32-eth01\src\main.cpp.o
Building .pio\build\wt32-eth01\bootloader.bin
Generating partitions .pio\build\wt32-eth01\partitions.bin
esptool.py v4.5.1
Creating esp32 image...
Merged 1 ELF section
Successfully created esp32 image.
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFi.cpp.o
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFiAP.cpp.o
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFiClient.cpp.o
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFiGeneric.cpp.o
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFiMulti.cpp.o
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFiSTA.cpp.o
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFiScan.cpp.o
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFiServer.cpp.o
Compiling .pio\build\wt32-eth01\lib9e8\WiFi\WiFiUdp.cpp.o
Compiling .pio\build\wt32-eth01\lib8eb\Ethernet\ETH.cpp.o
Compiling .pio\build\wt32-eth01\lib828\FS\FS.cpp.o
src/main.cpp:40: warning: "ETH_CLK_MODE" redefined
 #define ETH_CLK_MODE    ETH_CLOCK_GPIO17_OUT // ETH_CLOCK_GPIO0_IN

In file included from C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-gpio.h:29,
                 from C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal.h:83,
                 from C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:36,
                 from C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiClient.h:24,
                 from C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFi.h:37,
                 from C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/Ethernet/src/ETH.h:24,
                 from src/main.cpp:30:
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/variants/wt32-eth01/pins_arduino.h:26: note: this is the location of the previous definition
 #define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN

In file included from C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:63,
                 from src/main.cpp:32:
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/detail/RequestHandler.h:10:28: error: 'HTTPMethod' has not been declared
     virtual bool canHandle(HTTPMethod method, String uri) { (void) method; (void) uri; return false; }
                            ^~~~~~~~~~
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/detail/RequestHandler.h:12:44: error: 'HTTPMethod' has not been declared
     virtual bool handle(WebServer& server, HTTPMethod requestMethod, String requestUri) { (void) server; (void) requestMethod; (void) requestUri; return false; }
                                            ^~~~~~~~~~
In file included from src/main.cpp:32:
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:88:27: error: 'HTTPMethod' has not been declared
   void on(const Uri &uri, HTTPMethod method, THandlerFunction fn);
                           ^~~~~~~~~~
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:89:27: error: 'HTTPMethod' has not been declared
   void on(const Uri &uri, HTTPMethod method, THandlerFunction fn, THandlerFunction ufn); //ufn handles file uploads
                           ^~~~~~~~~~
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:96:3: error: 'HTTPMethod' does not name a type; did you mean 'HTTPAuthMethod'?
   HTTPMethod method() { return _currentMethod; }
   ^~~~~~~~~~
   HTTPAuthMethod
C:/Users/nicol/.platformio/packages/framework-arduinoespressif32/libraries/WebServer/src/WebServer.h:179:3: error: 'HTTPMethod' does not name a type; did you mean 'HTTPAuthMethod'?
   HTTPMethod  _currentMethod;
   ^~~~~~~~~~
   HTTPAuthMethod
src/main.cpp: In function 'void setup()':
src/main.cpp:148:31: error: 'HTTP_GET' was not declared in this scope
   server.on("/getRandomData", HTTP_GET, handleAjax); // Request and callback function of the get method sent by ajax in the registration web page
                               ^~~~~~~~
src/main.cpp:148:31: note: suggested alternative: 'DST_EET'
   server.on("/getRandomData", HTTP_GET, handleAjax); // Request and callback function of the get method sent by ajax in the registration web page
                               ^~~~~~~~
                               DST_EET
*** [.pio\build\wt32-eth01\src\main.cpp.o] Error 1
======================================================================================= [FAILED] Took 14.35 seconds =======================================================================================

 *  The terminal process "C:\Users\nicol\.platformio\penv\Scripts\platformio.exe 'run'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it.

I’m using the bog-standard

[env:wt32-eth01]
platform = espressif32
board = wt32-eth01
framework = arduino

platformio.ini and copy paste this as src/main.cpp and it compiles normally.

Processing wt32-eth01 (platform: espressif32; board: wt32-eth01; framework: arduino)
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Tool Manager: Installing platformio/framework-arduinoespressif32 @ ~3.20009.0
Downloading  [####################################]  100%
Unpacking  [####################################]  100%
Tool Manager: framework-arduinoespressif32@3.20009.0 has been installed!
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/wt32-eth01.html
PLATFORM: Espressif 32 (6.3.1) > Wireless-Tag WT32-ETH01 Ethernet Module
HARDWARE: ESP32 240MHz, 320KB RAM, 4MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
 - framework-arduinoespressif32 @ 3.20009.0 (2.0.9)
 - tool-esptoolpy @ 1.40501.0 (4.5.1)
 - toolchain-xtensa-esp32 @ 8.4.0+2021r2-patch5
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 34 compatible libraries
Scanning dependencies...
Dependency Graph
|-- Ethernet @ 2.0.0
|-- WebServer @ 2.0.0
|-- WiFi @ 2.0.0
Building in release mode
Compiling .pio\build\wt32-eth01\src\main.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFi.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFiAP.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFiClient.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFiGeneric.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFiMulti.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFiSTA.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFiScan.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFiServer.cpp.o
Compiling .pio\build\wt32-eth01\lib586\WiFi\WiFiUdp.cpp.o
Compiling .pio\build\wt32-eth01\lib2b5\Ethernet\ETH.cpp.o
Compiling .pio\build\wt32-eth01\lib4ed\FS\FS.cpp.o
Compiling .pio\build\wt32-eth01\lib4ed\FS\vfs_api.cpp.o
Compiling .pio\build\wt32-eth01\lib063\WebServer\Parsing.cpp.o
src/main.cpp:40: warning: "ETH_CLK_MODE" redefined
 #define ETH_CLK_MODE    ETH_CLOCK_GPIO17_OUT // ETH_CLOCK_GPIO0_IN

In file included from C:/Users/Max/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal-gpio.h:29,
                 from C:/Users/Max/.platformio/packages/framework-arduinoespressif32/cores/esp32/esp32-hal.h:83,
                 from C:/Users/Max/.platformio/packages/framework-arduinoespressif32/cores/esp32/Arduino.h:36,
                 from C:/Users/Max/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFiClient.h:24,
                 from C:/Users/Max/.platformio/packages/framework-arduinoespressif32/libraries/WiFi/src/WiFi.h:37,
                 from C:/Users/Max/.platformio/packages/framework-arduinoespressif32/libraries/Ethernet/src/ETH.h:24,
                 from src/main.cpp:30:
C:/Users/Max/.platformio/packages/framework-arduinoespressif32/variants/wt32-eth01/pins_arduino.h:26: note: this is the location of the previous definition
 #define ETH_CLK_MODE ETH_CLOCK_GPIO0_IN

Compiling .pio\build\wt32-eth01\lib063\WebServer\WebServer.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\Esp.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\FirmwareMSC.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\FunctionalInterrupt.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\HWCDC.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\HardwareSerial.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\IPAddress.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\IPv6Address.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\MD5Builder.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\Print.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\Stream.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\StreamString.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\Tone.cpp.o
Archiving .pio\build\wt32-eth01\lib2b5\libEthernet.a
Indexing .pio\build\wt32-eth01\lib2b5\libEthernet.a
Archiving .pio\build\wt32-eth01\lib586\libWiFi.a
Indexing .pio\build\wt32-eth01\lib586\libWiFi.a
Compiling .pio\build\wt32-eth01\FrameworkArduino\USB.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\USBCDC.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\USBMSC.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\WMath.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\WString.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\base64.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-adc.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-bt.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-cpu.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-dac.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-gpio.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-i2c-slave.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-i2c.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-ledc.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-matrix.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-misc.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-psram.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-rgb-led.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-rmt.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-sigmadelta.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-spi.c.o
Archiving .pio\build\wt32-eth01\lib063\libWebServer.a
Indexing .pio\build\wt32-eth01\lib063\libWebServer.a
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-time.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-timer.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-tinyusb.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-touch.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\esp32-hal-uart.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\main.cpp.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\wiring_pulse.c.o
Compiling .pio\build\wt32-eth01\FrameworkArduino\wiring_shift.c.o
Archiving .pio\build\wt32-eth01\libFrameworkArduino.a
Indexing .pio\build\wt32-eth01\libFrameworkArduino.a
Linking .pio\build\wt32-eth01\firmware.elf
Retrieving maximum program size .pio\build\wt32-eth01\firmware.elf
Checking size .pio\build\wt32-eth01\firmware.elf
Advanced Memory Usage is available via "PlatformIO Home > Project Inspect"
RAM:   [=         ]  13.6% (used 44616 bytes from 327680 bytes)
Flash: [======    ]  60.8% (used 797381 bytes from 1310720 bytes)
Building .pio\build\wt32-eth01\firmware.bin
esptool.py v4.5.1
Creating esp32 image...
Merged 25 ELF sections
Successfully created esp32 image.
=================================================================================== [SUCCESS] Took 168.63 seconds =================================================================================== *  Terminal will be reused by tasks, press any key to close it. 

You are one minor version behind in Espressif32 platform. Please do the following:

  1. In a PlatformIO Core CLI, execute pio pkg update -g -p espressif32
  2. Delete the .pio folder in the project folder
  3. Build again.

Thanks for your answer.
I follow your recommendations and I got still the same error.
I thing something is broken in my platformio …
Any folfer I can delete in my system ? I’m running on windows.
Any other idea ?

  1. Close VSCode
  2. Delete the C:\Users\<user>\.platformio folder fully
  3. Reopen VSCode
  4. Let PlatformIO reinstall itself automatically
  5. Build again.

It works ! thanks a lot !