В настоящее время нет способа запустить реальную среду Cloudflare Workers локально.Коллектив Workers знает, что разработчикам это необходимо, но для отделения основной среды исполнения Workers от остальной части программного стека Cloudflare, которая в противном случае слишком сложна для локального запуска, потребуется определенная работа.
В то же время существуютВместо этого вы можете попробовать несколько вариантов:
Сторонний эмулятор
Cloudworker - это эмулятор для Cloudflare Workers, который работает локально поверх node.js.Он был построен инженерами в Dollar Shave Club, компании, которая использует Workers, а не Cloudflare.Поскольку это полностью независимая реализация среды Workers, между ее поведением и «реальной вещью», скорее всего, будут небольшие различия.Тем не менее, этого достаточно, чтобы выполнить некоторую работу.
Предварительный просмотр API службы
Предварительный просмотр на cloudflareworkers.com доступен через API.С помощью некоторых команд curl
вы можете загрузить свой код на cloudflareworkers.com и запустить его тестирование.Это не совсем «локально», но если вы все равно всегда подключены к Интернету, это почти одно и то же.Вам не нужны специальные учетные данные для использования этого API, поэтому вы можете написать несколько сценариев, которые используют его для запуска модульных тестов и т. Д.
Загрузите сценарий с именем worker.js
, POST
отправив его в https://cloudflareworkers.com/script
:
SCRIPT_ID=$(curl -sX POST https://cloudflareworkers.com/script \
-H "Content-Type: text/javascript" --data-binary @worker.js | \
jq -r .id)
Теперь $SCRIPT_ID
будет 32-значным шестнадцатеричным числом, идентифицирующим ваш сценарий.Обратите внимание, что идентификатор основан на хэше, поэтому, если вы дважды загрузите один и тот же сценарий, вы получите тот же идентификатор.
Далее создайте случайный идентификатор сеанса (32 шестнадцатеричных числа):
SESSION_ID=$(head -c 16 /dev/urandom | xxd -p)
Важно, чтобы этот идентификатор сеанса был криптографически случайным, потому что любой, у кого есть идентификатор, сможет подключить devtools к вашему предварительному просмотру и отладить его.
Давайте также определим две части конфигурации:
PREVIEW_HOST=example.com
HTTPS=1
Они указывают, что при запуске вашего работника предварительный просмотр должен действовать так, как если бы он работал на https://example.com
.URL и заголовок Host
входящих запросов будут переписаны с использованием этого протокола и имени хоста.Установите HTTPS=1
, если URL-адрес должен быть HTTPS, или HTTPS=0
, если нет.
Теперь вы можете отправить запрос вашему работнику, например:
curl https://00000000000000000000000000000000.cloudflareworkers.com \
-H "Cookie: __ew_fiddle_preview=$SCRIPT_ID$SESSION_ID$HTTPS$PREVIEW_HOST"
(32 ноля могут бытьлюбые шестнадцатеричные цифры. При использовании предварительного просмотра в браузере они генерируются случайным образом, чтобы предотвратить вмешательство файлов cookie и кэшированного содержимого между сеансами. Однако при использовании curl это не имеет значения, поэтому все ноль - это хорошо.)
Вы можете изменить эту строку curl
, чтобы включить путь в URL-адрес, использовать другой метод (например, -X POST
), добавить заголовки и т. Д. Пока имя хоста и файл cookie совпадают, как показано, он будет идтик вашему рабочему предварительного просмотра.
Наконец, вы можете подключить консоль devtools для отладки в Chrome (в настоящее время работает только в Chrome):
google-chrome https://cloudflareworkers.com/devtools/inspector.html?wss=cloudflareworkers.com/inspect/$SESSION_ID&v8only=true
Обратите внимание, что приведенный выше API официально не задокументированв настоящее время и может измениться в будущем, но об изменениях должно быть относительно легко узнать, открыв cloudflareworkers.com
в браузере и просмотрев запросы, которые он делает.