wrangler-legacy
wrangler-legacy copied to clipboard
`wrangler dev` runs published worker, not local
đ Bug report
Describe the bug
I have a worker that I've already published (not via wrangler publish
). When I run wrangler dev
, I get a local HTTP server that seems to run the published version of the worker, regardless of what my local code looks like.
Reproduce the bug
Create a webpack-style worker
# wrangler.toml
account_id = "2d9fâŚ"
entry-point = "./index.js"
name = "my-worker"
routes = [
"www.example.com/my-worker/*",
]
type = "webpack"
webpack_config = "./webpack.config.js"
zone_id = "97d7âŚ"
// index.js
// The published version is much more complex, but I've reduced it to debug locally:
addEventListener('fetch', event => {
console.log(`fetch ${event.request.method} ${event.request.url}`)
event.respondWith(new Response('OK', { status: 200 }))
})
Run wrangler dev
:
$ wrangler dev
đ Listening on http://127.0.0.1:8787
đ Detected changes...
đ Ignoring stale first change
Make a local request:
$ curl -svo /dev/null http://127.0.0.1:8787
* Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to 127.0.0.1 (127.0.0.1) port 8787 (#0)
> GET / HTTP/1.1
> Host: 127.0.0.1:8787
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 307 Temporary Redirect
< date: Fri, 26 Feb 2021 00:14:55 GMT
< content-type: text/plain;charset=UTF-8
< content-length: 24
âŚ
The wrangler dev
log shows
[2021-02-25 16:14:55] GET example.com/ HTTP/1.1 307 Temporary Redirect
If I make a minor change, like commenting out the console.log
, the wrangler dev
log shows
đ Detected changes...
But the request always goes to my zone. It never invokes the local worker.
I've also tried running wrangler build
both before wrangler dev
and while it's running. Neither has any effect.
Expected behavior
When I make a request to http://127.0.0.1:8787
, it invokes the worker, prints to the log, and receives a 200 OK.
Environment and versions
Mac OS 11.2
$ wrangler -V
đˇ ⨠wrangler 1.13.0
$ node -v
v12.16.3
The problem was that "www.example.com/my-worker/*"
didn't match the URL since www.example.com
doesn't match 127.0.0.1:8787
. The only thing that works is removing routes
and adding workers_dev = true
.
Is there no way to keep routes
in my wrangler.toml
and yet also support local development?
This doesn't work:
routes = [
# production:
"www.example.com/my-worker/*",
# things I've tried for dev:
"my-worker.example.workers.dev/my-worker/*",
"localhost:9000/my-worker/*",
"127.0.0.1:9000/my-worker/*",
"/my-worker/*",
]
[dev]
ip = "127.0.0.1"
local_protocol="http"
port=9000
Possibly a duplicate of #1546
I had the same experience and came up with a work-around. I have my worker published to a subdomain and dev doesn't work correctly, hitting the root domain. Removing the route in the default config and adding a production env fixed it.
Here's my working wrangler.toml:
name = "worker-dev"
type = "javascript"
account_id = "***"
workers_dev = true
zone_id = "***"
[env.staging]
name = "worker-staging"
route = "worker-staging.example.com/*"
[env.production]
name = "worker"
route = "worker.example.com/*"
wrangler publish no longer publishes to the correct domain, so just do wrangler publish -e production
instead.
That doesn't quite work for me, but it inspired this, which does!
name = "worker-dev"
type = "javascript"
account_id = "***"
workers_dev = true
zone_id = "***"
[env.development]
name = "worker-development"
route = "*"
[env.staging]
name = "worker-staging"
route = "worker-staging.example.com/*"
[env.production]
name = "worker"
route = "worker.example.com/*"
I can then wrangler dev --env=development
. I just need to make sure never to do wrangler publish --env=dev
.
When I run the worker that way and inspect fetchEvent.request.url
, the origin https://myzone.com/
even though my curl is to http://127.0.0.1:8787/
.
Awesome. Glad it worked out.
I added all my wrangler scripts in package.json to avoid mistakes. Forgetting to add the env is something I would definitely do.
This issue has been automatically marked as stale because it has not had recent activity in the last 180 days. It will be closed if no further activity occurs in the next week. Please feel free to comment if you'd like it to remain open, and thank you for your contributions.
Bump. There's a good workaround, but this is definitely still a bug.
+1 to solve this issue. It is very annoying
+1 to solve this
Thanks for creating this issue! Wrangler v1 is now deprecated and support is only being provided for critical updates or security concerns. As such, we are closing this PR.
New versions of Wrangler are maintained in the workers-sdk repo. If you are running into a similar issue with wrangler v2, please report it or create a new PR in the workers-sdk repo. For more info about wrangler v1 deprecation, please check out our blog post.