Holidaymakers in the Los Cabos resort, popular with US tourists and famed for its beaches and Jack Nicklaus-designed golf courses, hastily grabbed flights to safety before the storm hits tomorrow.
The US National Hurricane Centre has downgraded John to a Category 2 hurricane, but said it still packed sustained winds of 165kph. Its strength was unlikely to change before it hit Baja California.
Long lines of tourists waited at Los Cabos airport for flights off the low-lying peninsula, while in the resort, workers boarded up shop windows, and many yachts left the marina for safer ports on the mainland.
Residents raced to stock up on food and emergency supplies as the hurricane's first rains hit the resort, which is made up of two towns, Cabo San Lucas and San Jose del Cabo.
Rescue workers began evacuating at least 10,000 residents from low-lying areas to temporary shelters.
Most of the resort's hotels have their own shelters where tourists could ride out the storm but some hotels were taking no chances and told guests to leave.
John swirled about west of the Islas Marias small island chain and penal colony tonight as it roared toward Los Cabos 275km away.
After smacking into Los Cabos, the storm was expected to spin back out into the Pacific, posing no threat to the United States.
In October, Hurricane Wilma hit Cancun and other beach resorts on Mexico's Caribbean coast. It caused massive damage, eroding large stretches of beach and stranding tens of thousands of tourists for days.
Ernesto makes landfall
Meanwhile Tropical Storm Ernesto made landfall on the southern North Carolina coast, coming ashore with heavy rains but sustained winds that fell just short of hurricane levels.
The storm's official arrival near Long Beach in Brunswick County came near the end of a long day of rain in the eastern half of North Carolina.
Ernesto dumped more than 20cm of rain on the Wilmington area, a record for August 31, according to the National Weather Service.
