Test your Cloudflare Workers application with your local machine. This package configures a sandbox Cloudflare environment suitable for running and testing your worker code locally.
$ npm install -D cloudflare-workers-sandbox
# Node.js 18 is now required to support fetch() and web streams.
npx sbox /path/to/cloudflare/workers/app.js
curl http://localhost:3000
Starting with version 1.4.0 the CHANGELOG contains the details of recent package changes.
Example module worker stored in a file: example-module-worker.js
export default {
async fetch(request, environment, context) {
return new Response("response from module worker");
}
}
To use the above worker create a javascript file to import the module
worker and set global.moduleWorker
.
import moduleWorker from './example-module-worker';
global.moduleWorker = moduleWorker;
Webpack can be used to bundle the files into a single file for use by the sandbox.
The sandbox logs all requests received and all fetch() dependencies made during request processing.
There are two options to access KV from the sandbox
Use the Cloudflare Workers KV library to access the live KV store when running in the local sandbox. The global dependencies required by the KV library are provided by the sandbox and do not need to be set like the example code shows.
Create a config file called kv-config.json. The Cloudflare Workers KV Rest API will be used to get and save data.
{
"accountId": "<cloudflare-account-id>",
"apiToken": "<cloudflare-api-token>",
"bindings": [
{
"name": "<kv-name-1>",
"namespaceId": "<kv-namespace-id-1>"
},
{
"name": "<kv-name-2>",
"namespaceId": "<kv-namespace-id-2>"
}
]
}
Create a config file called service-binding.json. External API calls will be made to the configured hostname while running in the sandbox.
{
"bindings": [
{
"name": "exampleService",
"hostname": "service.example.com"
}
]
}
MIT license; see LICENSE.