title: Google App Engine - Razzle isomorphic react app - serve issues with no client bundles or assets
body: <p>I haven't been able to take the default bare-skin <code>razzle-app</code> (<a href="https://github.com/jaredpalmer/razzle" rel="nofollow noreferrer">https://github.com/jaredpalmer/razzle</a>) and make it work when I deploy it to <code>Google App Engine</code>. If anyone has experience deploying isomorphic react apps to GAE, then any inputs would be great.</p>
  
  <p>After deployment, it serves the html from the server.js (it only serves the html text for the route but nothing else - no application nor any assets on the page). As a proof of concept, I was returning different html content for different routes, and it apparently works as the html text content as well as head tags were different. However, there are no static assets on the site (no images, css or js).</p>
  
  <p>Build process output:</p>
  
  <pre><code>razzle build
  
  Creating an optimized production build...
  Compiling client...
  Compiled client successfully.
  Compiling server...
  Compiled server successfully.
  Compiled successfully.
  
  File sizes after gzip:
  
    48.22 KB  build/static/js/bundle.c798792d.js
    333 B     build/static/css/bundle.659481d8.css
  </code></pre>
  
  <p>the build directory contains:</p>
  
  <pre><code>&gt; build
        &gt; public 
              &gt; static
                     &gt; css
                     &gt; js
                     &gt; media
              &gt; favicon and robots
       &gt; static
              &gt; media (same one as public/staic)
       &gt; assets.json
       &gt; server.js
  </code></pre>
  
  <p>Notice that the <code>build/static/js</code> doesn't exist. It's inside <code>build/public/static/js</code>. Is it weird?
  On accessing the site (only html text from the server), I checked the head if the client bundle waas sent or not. Itis fetching from a wrong location.</p>
  
  <pre><code>&lt;script src="http://localhost:8081/static/js/bundle.js" defer="" crossorigin=""&gt;&lt;/script&gt;
  </code></pre>
  
  <p>My package.json looks like :</p>
  
  <pre><code>{
    "name": "my-razzle-app",
    "version": "0.1.0",
    "license": "MIT",
    "scripts": {
      "start": "razzle start",
      "build": "razzle build",
      "test": "razzle test --env=jsdom",
      "start:prod": "NODE_ENV=production node build/server.js"
    },
    "dependencies": {standard
      "express": "^4.17.1",
      "razzle": "^3.0.0",
      "react": "^16.11.0",
      "react-dom": "^16.11.0",
      "react-router-dom": "^5.1.2"
    }
  }
  </code></pre>
  
  <p>Note that GAE runs npm run start.</p>
  
  <p>I'm currently using flex , standard never worked for me at all. app.yaml looks like:</p>
  
  <pre><code>env: flex
  runtime: nodejs
  service: web
  </code></pre>
  
  <p>Running locally :</p>
  
  <pre><code>razzle start
  
   WAIT  Compiling...
  
  
  ✔ Client
    Compiled successfully in 2.14s
  
  ✔ Server
    Compiled successfully in 153.86ms
  
  ℹ ｢wds｣: Project is running at http://localhost:3001/
  ℹ ｢wds｣: webpack output is served from undefined
  ℹ ｢wds｣: Content not from webpack is served from /home/anz/Cogi/timecloud-client/my-app
  ℹ ｢wds｣: 404s will fallback to /index.html
  ✅  Server-side HMR Enabled!
   started
  </code></pre>
  
  <p>I can access it at localhost:3000, not localhost:3001.</p>