0

I built my react app after following this tutorial https://daveceddia.com/create-react-app-express-backend/ and https://daveceddia.com/deploy-react-express-app-heroku/. I know i'm not publishing to Heroku because I'm using an azure web app service, but due to the structure of my project I use a proxy to have the backend and front end hosted at the same time. When I run my app on localhost everything works fine and my react routing works so I know it's not an issue with my code. I have checked my logs and my requests hit the correct endpoints, however, none of my front end renders due to 403's, 500's and 404's. I have pin pointed it to my web.config file and I have no clue what it should look like. Some information about which file's I'm trying to render are here

heres the github repo as well incase this can help https://github.com/ecoulson/OverlakeASB

path to index.html: /client/public/index.html

path to frontend: /client

Here's my package.json

{
  "name": "overlakeasb",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node server.js 3001",
    "heroku-postbuild": "cd client && npm install && npm run build",
    "postinstall": "cd client && npm install && npm run build"
  },
  "engines": {
    "node": "8.11.1",
    "npm": "5.6.0"
  },
  "dependencies": {
    "@fortawesome/fontawesome-svg-core": "^1.2.0-14",
    "@fortawesome/free-brands-svg-icons": "^5.1.0-11",
    "@fortawesome/free-regular-svg-icons": "^5.1.0-11",
    "@fortawesome/free-solid-svg-icons": "^5.2.0",
    "@fortawesome/react-fontawesome": "0.1.0-11",
    "azure-keyvault": "^3.0.4",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "easy-rbac": "^3.1.0",
    "easy-session": "^2.0.1",
    "express": "~4.16.0",
    "express-session": "^1.15.6",
    "http-errors": "~1.6.2",
    "i": "^0.3.6",
    "jade": "~1.11.0",
    "jquery": "^3.3.1",
    "moment": "^2.22.2",
    "morgan": "~1.9.0",
    "mssql-connection-string": "^0.1.0",
    "mysql": "github:mysqljs/mysql",
    "node-fetch": "^2.2.0",
    "npm": "^6.2.0",
    "q": "^1.5.1",
    "rc-dropdown": "^2.2.0",
    "rc-menu": "^7.2.6",
    "react": "^16.4.2",
    "react-addons-css-transition-group": "^15.6.2",
    "react-animate-height": "^2.0.3",
    "react-contextmenu": "^2.9.3",
    "react-dom": "^16.4.2",
    "react-router": "^4.3.1",
    "react-router-dom": "^4.3.1",
    "react-router-transition": "^1.2.1",
    "react-select": "^2.0.0",
    "react-tooltip": "^3.6.1",
    "tedious": "^2.6.3",
    "tedious-connection-pool": "^1.0.5"
  }
}

This is my web.config as of now

<configuration>
    <system.webServer>
        <webSocket enabled="false" />
        <handlers>
            <!-- Indicates that the server.js file is a node.js site to be handled by the iisnode module -->
            <add name="iisnode" path="server.js" verb="*" modules="iisnode"/>
        </handlers>
        <defaultDocument enabled="true">
            <files>
                <add value="/client/public/index.html" />
            </files>
        </defaultDocument>
        <rewrite>
            <rules>
                <rule name="React Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/client/public/index.html" />
                </rule>
            </rules>
        </rewrite>
        <tracing> 
            <traceFailedRequests> 
                <add path="*"> 
                    <traceAreas> 
                        <add provider="WWW Server" areas="Security" verbosity="Verbose" /> 
                    </traceAreas> 
                    <failureDefinitions statusCodes="404.2" /> 
                </add> 
            </traceFailedRequests> 
        </tracing> 
    </system.webServer>
    <system.applicationHost>
        <traceFailedRequestsLogging  enabled="true" /> 
    </system.applicationHost>
</configuration>
0

1 Answer 1

1

You might try adding

<globalModules>
<add name="iisnode" image="<path-to-iisnode.dll>" />
</globalModules>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.