Yup, weird.
- the browser shouldn’t even get to your image if it did not find 
main.css. (Although theABORTEDerror might come from hot-reloading/browsersync, not sure about that.) - anyway, your 
publicPath(wp-content/...) is missing from the image’s path, which either means a misconfiguration of the dev server (like a wrongpublicPathinconfig.json) or somehow you get an absolute path in your compiled CSS, thus, again: - what does your compiled CSS say? Does 
dist/styles/main.cssexist? How is hero.jpg referenced there? 
I had an issue with absolute paths recently, but I tried to run WP in a subdirectory locally/on the dev server (test.dev/example.com/wp-content), and in root for production (example.com/wp-content) and found that this setup just causes headaches… But I guess your problem is different.