Our Partner & Developer boards on the community are moving to a brand new home: the .dev community forums! While you can still access past discussions here, for all your future app and storefront building questions, head over to the new forums.

We're moving the community! Starting July 7, the current community will be read-only for approx. 2 weeks. You can browse content, but posting will be temporarily unavailable. Learn more

Re: Build a shopify app with node and react failure - Listen for Store Events with Webhooks

Solved

Build a shopify app with node and react failure - Listen for Store Events with Webhooks

aszalacinski
Visitor
2 0 3

So I got to the very last part of the awesome tutorial and am now receiving the following error when implementing the instructions here:

https://shopify.dev/tutorials/build-a-shopify-app-with-node-and-react/listen-for-store-events-with-w... 

 

When I go to start my server, I get an UnhandledPromiseRejectionWarning error:

 

app_1  | (node:18) UnhandledPromiseRejectionWarning: TypeError: Unexpected MODIFIER at 0, expected END
app_1  |     at mustConsume (/app/node_modules/path-to-regexp/dist/index.js:113:15)
app_1  |     at parse (/app/node_modules/path-to-regexp/dist/index.js:172:9)
app_1  |     at stringToRegexp (/app/node_modules/path-to-regexp/dist/index.js:329:27)
app_1  |     at pathToRegexp (/app/node_modules/path-to-regexp/dist/index.js:403:12)
app_1  |     at new Layer (/app/node_modules/koa-router/lib/layer.js:44:17)
app_1  |     at Router.register (/app/node_modules/koa-router/lib/router.js:561:17)
app_1  |     at Router.<computed> [as get] (/app/node_modules/koa-router/lib/router.js:199:12)
app_1  |     at /app/server.js:70:12
app_1  | (Use `node --trace-warnings ...` to show where the warning was created)
app_1  | (node:18) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
app_1  | (node:18) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

The page load returns a 502 Bad Gateway

 

Digging into the issue, it appears the koa-router is making a call to dependency that throws an error but isn't being handled... on April 20th KoaJS team upgraded path-to-regexp from version 1.* to 6.1.0 (release v9.0) and it seems this isn't playing well... downgrading Koa-router to the version used in the tutorial (8.0.8) appears to work fine... posting this so the Shopify team and other would-be partners have a jump off point to troubleshoot. Good luck!

Accepted Solution (1)

FurnaceX
Shopify Partner
53 2 48

This is an accepted solution.

Thanks for this! I just stumbled on your post and was just having the exact same issue. 

 

I fixed it with a better router path:

Instead of

router.all('*', async (ctx, next) => {

use:

router.all('/(.*)', async (ctx, next) => {

You may also want to use @koa/router instead of koa-router. The later is no longer being updated.

View solution in original post

Replies 6 (6)

FurnaceX
Shopify Partner
53 2 48

This is an accepted solution.

Thanks for this! I just stumbled on your post and was just having the exact same issue. 

 

I fixed it with a better router path:

Instead of

router.all('*', async (ctx, next) => {

use:

router.all('/(.*)', async (ctx, next) => {

You may also want to use @koa/router instead of koa-router. The later is no longer being updated.

aszalacinski
Visitor
2 0 3

@FurnaceX awesome! Thanks for the tip! React/Shopify are new to me so this is EXACTLY why I posted here.

 

What about the ValidateRequest() method from the koa-shopify-auth lib? if you drop that middleware in per the tutorial, does it play nice?

FurnaceX
Shopify Partner
53 2 48

yep, ValidateRequest() works!

SecretCat
Visitor
2 0 2

Thank you 😄

NagoyaDev
Excursionist
26 1 1

You are a king amongst men!

gildniy
Visitor
1 0 0

Thank you, this one helped me!