В настоящее время нет возможности запустить настоящую среду выполнения Cloudflare Workers локально. Команда Workers знает, что это нужно разработчикам, но потребуется некоторая работа, чтобы отделить базовую среду выполнения Workers от остальной части программного стека Cloudflare, который в противном случае слишком сложен для локального запуска.
А пока есть несколько вариантов, которые вы можете попробовать:
Сторонний эмулятор
Cloudworker - это эмулятор для Cloudflare Workers, который запускается локально поверх node.js. Он был построен инженерами Dollar Shave Club, компании, которая использует Workers, а не Cloudflare. Поскольку это полностью независимая реализация среды Workers, вероятно, будут небольшие отличия между ее поведением и «реальной вещью». Однако этого достаточно, чтобы поработать.
Предварительный просмотр Service 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)
Важно, чтобы этот идентификатор сеанса был криптографически случайным, потому что любой, у кого есть идентификатор, сможет подключить инструменты разработчика к вашему предварительному просмотру и отладить его.
Также определим две части конфигурации:
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
в браузере и просмотрев запросы, которые он делает.
person
Kenton Varda
schedule
23.12.2018